vbscript: Implemented builtin function CBool.
[wine.git] / dlls / msvcp71 / ios.c
blob8fe60003605794f926b8e59843f6f9dd80f785dc
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 "msvcp.h"
27 #include "windef.h"
28 #include "winbase.h"
29 #include "wine/debug.h"
30 WINE_DEFAULT_DEBUG_CHANNEL(msvcp);
32 /* ?_Index@ios_base@std@@0HA */
33 int ios_base_Index = 0;
34 /* ?_Sync@ios_base@std@@0_NA */
35 MSVCP_bool ios_base_Sync = FALSE;
37 typedef struct {
38 streamoff off;
39 __int64 DECLSPEC_ALIGN(8) pos;
40 int state;
41 } fpos_int;
43 static inline const char* debugstr_fpos_int(fpos_int *fpos)
45 return wine_dbg_sprintf("fpos(%ld %s %d)", fpos->off, wine_dbgstr_longlong(fpos->pos), fpos->state);
48 typedef struct {
49 void (__cdecl *pfunc)(ios_base*, streamsize);
50 streamsize arg;
51 } manip_streamsize;
53 typedef 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 int state0;
68 char putback;
69 basic_string_char *conv;
70 MSVCP_bool wrotesome;
71 int state;
72 MSVCP_bool close;
73 FILE *file;
74 } basic_filebuf_char;
76 typedef struct {
77 basic_streambuf_wchar base;
78 codecvt_wchar *cvt;
79 int state0;
80 wchar_t putback;
81 basic_string_char *conv;
82 MSVCP_bool wrotesome;
83 int state;
84 MSVCP_bool close;
85 FILE *file;
86 } basic_filebuf_wchar;
88 typedef enum {
89 STRINGBUF_allocated = 1,
90 STRINGBUF_no_write = 2,
91 STRINGBUF_no_read = 4,
92 STRINGBUF_append = 8,
93 STRINGBUF_at_end = 16
94 } basic_stringbuf_state;
96 typedef struct {
97 basic_streambuf_char base;
98 char *seekhigh;
99 int state;
100 char allocator; /* empty struct */
101 } basic_stringbuf_char;
103 typedef struct {
104 basic_streambuf_wchar base;
105 wchar_t *seekhigh;
106 int state;
107 char allocator; /* empty struct */
108 } basic_stringbuf_wchar;
110 typedef struct {
111 ios_base base;
112 basic_streambuf_char *strbuf;
113 struct _basic_ostream_char *stream;
114 char fillch;
115 } basic_ios_char;
117 typedef struct {
118 ios_base base;
119 basic_streambuf_wchar *strbuf;
120 struct _basic_ostream_wchar *stream;
121 wchar_t fillch;
122 } basic_ios_wchar;
124 typedef struct _basic_ostream_char {
125 const int *vbtable;
126 /* virtual inheritance
127 * basic_ios_char basic_ios;
129 } basic_ostream_char;
131 typedef struct _basic_ostream_wchar {
132 const int *vbtable;
133 /* virtual inheritance
134 * basic_ios_wchar basic_ios;
136 } basic_ostream_wchar;
138 typedef struct {
139 const int *vbtable;
140 streamsize count;
141 /* virtual inheritance
142 * basic_ios_char basic_ios;
144 } basic_istream_char;
146 typedef struct {
147 const int *vbtable;
148 streamsize count;
149 /* virtual inheritance
150 * basic_ios_wchar basic_ios;
152 } basic_istream_wchar;
154 typedef struct {
155 basic_istream_char base1;
156 basic_ostream_char base2;
157 /* virtual inheritance
158 * basic_ios_char basic_ios;
160 } basic_iostream_char;
162 typedef struct {
163 basic_istream_wchar base1;
164 basic_ostream_wchar base2;
165 /* virtual inheritance
166 * basic_ios_wchar basic_ios;
168 } basic_iostream_wchar;
170 typedef struct {
171 basic_ostream_char base;
172 basic_filebuf_char filebuf;
173 /* virtual inheritance
174 * basic_ios_char basic_ios;
176 } basic_ofstream_char;
178 typedef struct {
179 basic_ostream_wchar base;
180 basic_filebuf_wchar filebuf;
181 /* virtual inheritance
182 * basic_ios_wchar basic_ios;
184 } basic_ofstream_wchar;
186 typedef struct {
187 basic_istream_char base;
188 basic_filebuf_char filebuf;
189 /* virtual inheritance
190 * basic_ios_char basic_ios;
192 } basic_ifstream_char;
194 typedef struct {
195 basic_istream_wchar base;
196 basic_filebuf_wchar filebuf;
197 /* virtual inheritance
198 * basic_ios_wchar basic_ios;
200 } basic_ifstream_wchar;
202 typedef struct {
203 basic_iostream_char base;
204 basic_filebuf_char filebuf;
205 /* virtual inheritance
206 * basic_ios_char basic_ios;
208 } basic_fstream_char;
210 typedef struct {
211 basic_iostream_wchar base;
212 basic_filebuf_wchar filebuf;
213 /* virtual inheritance
214 * basic_ios_char basic_ios;
216 } basic_fstream_wchar;
218 typedef struct {
219 basic_ostream_char base;
220 basic_stringbuf_char strbuf;
221 /* virtual inheritance
222 * basic_ios_char basic_ios;
224 } basic_ostringstream_char;
226 typedef struct {
227 basic_ostream_wchar base;
228 basic_stringbuf_wchar strbuf;
229 /* virtual inheritance
230 * basic_ios_wchar basic_ios;
232 } basic_ostringstream_wchar;
234 typedef struct {
235 basic_istream_char base;
236 basic_stringbuf_char strbuf;
237 /* virtual inheritance
238 * basic_ios_char basic_ios;
240 } basic_istringstream_char;
242 typedef struct {
243 basic_istream_wchar base;
244 basic_stringbuf_wchar strbuf;
245 /* virtual inheritance
246 * basic_ios_wchar basic_ios;
248 } basic_istringstream_wchar;
250 typedef struct {
251 basic_iostream_char base;
252 basic_stringbuf_char strbuf;
253 /* virtual inheritance
254 * basic_ios_char basic_ios;
256 } basic_stringstream_char;
258 typedef struct {
259 basic_iostream_wchar base;
260 basic_stringbuf_wchar strbuf;
261 /* virtual inheritance
262 * basic_ios_wchar basic_ios;
264 } basic_stringstream_wchar;
266 typedef enum {
267 STRSTATE_Allocated = 1,
268 STRSTATE_Constant = 2,
269 STRSTATE_Dynamic = 4,
270 STRSTATE_Frozen = 8
271 } strstreambuf__Strstate;
273 typedef struct {
274 basic_streambuf_char base;
275 streamsize minsize;
276 char *endsave;
277 char *seekhigh;
278 int strmode;
279 void* (__cdecl *palloc)(MSVCP_size_t);
280 void (__cdecl *pfree)(void*);
281 } strstreambuf;
283 typedef struct {
284 basic_ostream_char base;
285 strstreambuf buf;
286 /* virtual inheritance
287 * basic_ios_char basic_ios;
289 } ostrstream;
291 typedef struct {
292 basic_istream_char base;
293 strstreambuf buf;
294 /* virtual inheritance
295 * basic_ios_char basic_ios;
297 } istrstream;
299 typedef struct {
300 basic_iostream_char base;
301 strstreambuf buf;
302 /* virtual inheritance
303 * basic_ios_char basic_ios;
305 } strstream;
307 extern const vtable_ptr MSVCP_iosb_vtable;
309 /* ??_7ios_base@std@@6B@ */
310 extern const vtable_ptr MSVCP_ios_base_vtable;
312 /* ??_7?$basic_ios@DU?$char_traits@D@std@@@std@@6B@ */
313 extern const vtable_ptr MSVCP_basic_ios_char_vtable;
315 /* ??_7?$basic_ios@_WU?$char_traits@_W@std@@@std@@6B@ */
316 extern const vtable_ptr MSVCP_basic_ios_wchar_vtable;
318 /* ??_7?$basic_ios@GU?$char_traits@G@std@@@std@@6B@ */
319 extern const vtable_ptr MSVCP_basic_ios_short_vtable;
321 /* ??_7?$basic_streambuf@DU?$char_traits@D@std@@@std@@6B@ */
322 extern const vtable_ptr MSVCP_basic_streambuf_char_vtable;
324 /* ??_7?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@6B@ */
325 extern const vtable_ptr MSVCP_basic_streambuf_wchar_vtable;
327 /* ??_7?$basic_streambuf@GU?$char_traits@G@std@@@std@@6B@ */
328 extern const vtable_ptr MSVCP_basic_streambuf_short_vtable;
330 /* ??_7?$basic_filebuf@DU?$char_traits@D@std@@@std@@6B@ */
331 extern const vtable_ptr MSVCP_basic_filebuf_char_vtable;
333 /* ??_7?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@6B@ */
334 extern const vtable_ptr MSVCP_basic_filebuf_wchar_vtable;
336 /* ??_7?$basic_filebuf@GU?$char_traits@G@std@@@std@@6B@ */
337 extern const vtable_ptr MSVCP_basic_filebuf_short_vtable;
339 /* ??_7?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
340 extern const vtable_ptr MSVCP_basic_stringbuf_char_vtable;
342 /* ??_7?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
343 extern const vtable_ptr MSVCP_basic_stringbuf_wchar_vtable;
345 /* ??_7?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
346 extern const vtable_ptr MSVCP_basic_stringbuf_short_vtable;
348 /* ??_8?$basic_ostream@DU?$char_traits@D@std@@@std@@7B@ */
349 const int basic_ostream_char_vbtable[] = {0, sizeof(basic_ostream_char)};
350 /* ??_7?$basic_ostream@DU?$char_traits@D@std@@@std@@6B@ */
351 extern const vtable_ptr MSVCP_basic_ostream_char_vtable;
353 /* ??_8?$basic_ostream@_WU?$char_traits@_W@std@@@std@@7B@ */
354 const int basic_ostream_wchar_vbtable[] = {0, sizeof(basic_ostream_wchar)};
355 /* ??_7?$basic_ostream@_WU?$char_traits@_W@std@@@std@@6B@ */
356 extern const vtable_ptr MSVCP_basic_ostream_wchar_vtable;
358 /* ??_8?$basic_ostream@GU?$char_traits@G@std@@@std@@7B@ */
359 const int basic_ostream_short_vbtable[] = {0, sizeof(basic_ostream_wchar)};
360 /* ??_7?$basic_ostream@GU?$char_traits@G@std@@@std@@6B@ */
361 extern const vtable_ptr MSVCP_basic_ostream_short_vtable;
363 /* ??_8?$basic_istream@DU?$char_traits@D@std@@@std@@7B@ */
364 const int basic_istream_char_vbtable[] = {0, sizeof(basic_istream_char)};
365 /* ??_7?$basic_istream@DU?$char_traits@D@std@@@std@@6B@ */
366 extern const vtable_ptr MSVCP_basic_istream_char_vtable;
368 /* ??_8?$basic_istream@_WU?$char_traits@_W@std@@@std@@7B@ */
369 const int basic_istream_wchar_vbtable[] = {0, sizeof(basic_istream_wchar)};
370 /* ??_7?$basic_istream@_WU?$char_traits@_W@std@@@std@@6B@ */
371 extern const vtable_ptr MSVCP_basic_istream_wchar_vtable;
373 /* ??_8?$basic_istream@GU?$char_traits@G@std@@@std@@7B@ */
374 const int basic_istream_short_vbtable[] = {0, sizeof(basic_istream_wchar)};
375 /* ??_7?$basic_istream@GU?$char_traits@G@std@@@std@@6B@ */
376 extern const vtable_ptr MSVCP_basic_istream_short_vtable;
378 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
379 const int basic_iostream_char_vbtable1[] = {0, sizeof(basic_iostream_char)};
380 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
381 const int basic_iostream_char_vbtable2[] = {0, sizeof(basic_iostream_char)-FIELD_OFFSET(basic_iostream_char, base2)};
382 /* ??_7?$basic_iostream@DU?$char_traits@D@std@@@std@@6B@ */
383 extern const vtable_ptr MSVCP_basic_iostream_char_vtable;
385 /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
386 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
387 const int basic_iostream_wchar_vbtable1[] = {0, sizeof(basic_iostream_wchar)};
388 /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
389 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
390 const int basic_iostream_wchar_vbtable2[] = {0, sizeof(basic_iostream_wchar)-FIELD_OFFSET(basic_iostream_wchar, base2)};
391 /* ??_7?$basic_iostream@_WU?$char_traits@_W@std@@@std@@6B@ */
392 extern const vtable_ptr MSVCP_basic_iostream_wchar_vtable;
393 /* ??_7?$basic_iostream@GU?$char_traits@G@std@@@std@@6B@ */
394 extern const vtable_ptr MSVCP_basic_iostream_short_vtable;
396 /* ??_8?$basic_ofstream@DU?$char_traits@D@std@@@std@@7B@ */
397 const int basic_ofstream_char_vbtable[] = {0, sizeof(basic_ofstream_char)};
398 /* ??_7?$basic_ofstream@DU?$char_traits@D@std@@@std@@6B@ */
399 extern const vtable_ptr MSVCP_basic_ofstream_char_vtable;
401 /* ??_8?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@7B@ */
402 const int basic_ofstream_wchar_vbtable[] = {0, sizeof(basic_ofstream_wchar)};
403 /* ??_7?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@6B@ */
404 extern const vtable_ptr MSVCP_basic_ofstream_wchar_vtable;
406 /* ??_8?$basic_ofstream@GU?$char_traits@G@std@@@std@@7B@ */
407 const int basic_ofstream_short_vbtable[] = {0, sizeof(basic_ofstream_wchar)};
408 /* ??_7?$basic_ofstream@GU?$char_traits@G@std@@@std@@6B@ */
409 extern const vtable_ptr MSVCP_basic_ofstream_short_vtable;
411 /* ??_8?$basic_ifstream@DU?$char_traits@D@std@@@std@@7B@ */
412 const int basic_ifstream_char_vbtable[] = {0, sizeof(basic_ifstream_char)};
413 /* ??_7?$basic_ifstream@DU?$char_traits@D@std@@@std@@6B@ */
414 extern const vtable_ptr MSVCP_basic_ifstream_char_vtable;
416 /* ??_8?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@7B@ */
417 const int basic_ifstream_wchar_vbtable[] = {0, sizeof(basic_ifstream_wchar)};
418 /* ??_7?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@6B@ */
419 extern const vtable_ptr MSVCP_basic_ifstream_wchar_vtable;
421 /* ??_8?$basic_ifstream@GU?$char_traits@G@std@@@std@@7B@ */
422 const int basic_ifstream_short_vbtable[] = {0, sizeof(basic_ifstream_wchar)};
423 /* ??_7?$basic_ifstream@GU?$char_traits@G@std@@@std@@6B@ */
424 extern const vtable_ptr MSVCP_basic_ifstream_short_vtable;
426 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
427 const int basic_fstream_char_vbtable1[] = {0, sizeof(basic_fstream_char)};
428 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
429 const int basic_fstream_char_vbtable2[] = {0, sizeof(basic_fstream_char)-FIELD_OFFSET(basic_fstream_char, base.base2)};
430 /* ??_7?$basic_fstream@DU?$char_traits@D@std@@@std@@6B@ */
431 extern const vtable_ptr MSVCP_basic_fstream_char_vtable;
433 /* ??_8?$basic_fstream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
434 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
435 const int basic_fstream_wchar_vbtable1[] = {0, sizeof(basic_fstream_wchar)};
436 /* ??_8?$basic_fstream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
437 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
438 const int basic_fstream_wchar_vbtable2[] = {0, sizeof(basic_fstream_wchar)-FIELD_OFFSET(basic_fstream_wchar, base.base2)};
439 /* ??_7?$basic_fstream@_WU?$char_traits@_W@std@@@std@@6B@ */
440 extern const vtable_ptr MSVCP_basic_fstream_wchar_vtable;
441 /* ??_7?$basic_fstream@GU?$char_traits@G@std@@@std@@6B@ */
442 extern const vtable_ptr MSVCP_basic_fstream_short_vtable;
444 /* ??_8?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
445 const int basic_ostringstream_char_vbtable[] = {0, sizeof(basic_ostringstream_char)};
446 /* ??_7?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
447 extern const vtable_ptr MSVCP_basic_ostringstream_char_vtable;
449 /* ??_8?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */
450 const int basic_ostringstream_wchar_vbtable[] = {0, sizeof(basic_ostringstream_wchar)};
451 /* ??_7?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
452 extern const vtable_ptr MSVCP_basic_ostringstream_wchar_vtable;
454 /* ??_8?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
455 const int basic_ostringstream_short_vbtable[] = {0, sizeof(basic_ostringstream_wchar)};
456 /* ??_7?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
457 extern const vtable_ptr MSVCP_basic_ostringstream_short_vtable;
459 /* ??_8?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
460 const int basic_istringstream_char_vbtable[] = {0, sizeof(basic_istringstream_char)};
461 /* ??_7?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
462 extern const vtable_ptr MSVCP_basic_istringstream_char_vtable;
464 /* ??_8?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */
465 const int basic_istringstream_wchar_vbtable[] = {0, sizeof(basic_istringstream_wchar)};
466 /* ??_7?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
467 extern const vtable_ptr MSVCP_basic_istringstream_wchar_vtable;
469 /* ??_8?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
470 const int basic_istringstream_short_vbtable[] = {0, sizeof(basic_istringstream_wchar)};
471 /* ??_7?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
472 extern const vtable_ptr MSVCP_basic_istringstream_short_vtable;
474 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
475 const int basic_stringstream_char_vbtable1[] = {0, sizeof(basic_stringstream_char)};
476 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
477 const int basic_stringstream_char_vbtable2[] = {0, sizeof(basic_stringstream_char)-FIELD_OFFSET(basic_stringstream_char, base.base2)};
478 /* ??_7?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
479 extern const vtable_ptr MSVCP_basic_stringstream_char_vtable;
481 /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
482 const int basic_stringstream_wchar_vbtable1[] = {0, sizeof(basic_stringstream_wchar)};
483 /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
484 const int basic_stringstream_wchar_vbtable2[] = {0, sizeof(basic_stringstream_wchar)-FIELD_OFFSET(basic_stringstream_wchar, base.base2)};
485 /* ??_7?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
486 extern const vtable_ptr MSVCP_basic_stringstream_wchar_vtable;
488 /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
489 const int basic_stringstream_short_vbtable1[] = {0, sizeof(basic_stringstream_wchar)};
490 /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
491 const int basic_stringstream_short_vbtable2[] = {0, sizeof(basic_stringstream_wchar)-FIELD_OFFSET(basic_stringstream_wchar, base.base2)};
492 /* ??_7?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
493 extern const vtable_ptr MSVCP_basic_stringstream_short_vtable;
495 /* ??_7strstreambuf@std@@6B */
496 extern const vtable_ptr MSVCP_strstreambuf_vtable;
498 static const int ostrstream_vbtable[] = {0, sizeof(ostrstream)};
499 extern const vtable_ptr MSVCP_ostrstream_vtable;
501 static const int istrstream_vbtable[] = {0, sizeof(istrstream)};
503 static const int strstream_vbtable1[] = {0, sizeof(strstream)};
504 static const int strstream_vbtable2[] = {0, sizeof(strstream)-FIELD_OFFSET(strstream, base.base2)};
505 extern const vtable_ptr MSVCP_strstream_vtable;
507 DEFINE_RTTI_DATA0(iosb, 0, ".?AV?$_Iosb@H@std@@")
508 DEFINE_RTTI_DATA1(ios_base, 0, &iosb_rtti_base_descriptor, ".?AV?$_Iosb@H@std@@")
509 DEFINE_RTTI_DATA2(basic_ios_char, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
510 ".?AV?$basic_ios@DU?$char_traits@D@std@@@std@@")
511 DEFINE_RTTI_DATA2(basic_ios_wchar, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
512 ".?AV?$basic_ios@_WU?$char_traits@_W@std@@@std@@")
513 DEFINE_RTTI_DATA2(basic_ios_short, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
514 ".?AV?$basic_ios@GU?$char_traits@G@std@@@std@@")
515 DEFINE_RTTI_DATA0(basic_streambuf_char, 0,
516 ".?AV?$basic_streambuf@DU?$char_traits@D@std@@@std@@")
517 DEFINE_RTTI_DATA0(basic_streambuf_wchar, 0,
518 ".?AV?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@")
519 DEFINE_RTTI_DATA0(basic_streambuf_short, 0,
520 ".?AV?$basic_streambuf@GU?$char_traits@G@std@@@std@@")
521 DEFINE_RTTI_DATA1(basic_filebuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
522 ".?AV?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@")
523 DEFINE_RTTI_DATA1(basic_filebuf_wchar, 0, &basic_streambuf_wchar_rtti_base_descriptor,
524 ".?AV?$basic_filebuf@GU?$char_traits@G@std@@@std@@")
525 DEFINE_RTTI_DATA1(basic_filebuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
526 ".?AV?$basic_filebuf@DU?$char_traits@D@std@@@std@@")
527 DEFINE_RTTI_DATA1(basic_stringbuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
528 ".?AV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
529 DEFINE_RTTI_DATA1(basic_stringbuf_wchar, 0, &basic_streambuf_wchar_rtti_base_descriptor,
530 ".?AV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
531 DEFINE_RTTI_DATA1(basic_stringbuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
532 ".?AV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
533 DEFINE_RTTI_DATA3(basic_ostream_char, sizeof(basic_ostream_char), &basic_ios_char_rtti_base_descriptor,
534 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
535 ".?AV?$basic_ostream@DU?$char_traits@D@std@@@std@@")
536 DEFINE_RTTI_DATA3(basic_ostream_wchar, sizeof(basic_ostream_wchar), &basic_ios_wchar_rtti_base_descriptor,
537 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
538 ".?AV?$basic_ostream@_WU?$char_traits@_W@std@@@std@@")
539 DEFINE_RTTI_DATA3(basic_ostream_short, sizeof(basic_ostream_wchar), &basic_ios_short_rtti_base_descriptor,
540 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
541 ".?AV?$basic_ostream@GU?$char_traits@G@std@@@std@@")
542 DEFINE_RTTI_DATA3(basic_istream_char, sizeof(basic_istream_char), &basic_ios_char_rtti_base_descriptor,
543 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
544 ".?AV?$basic_istream@DU?$char_traits@D@std@@@std@@")
545 DEFINE_RTTI_DATA3(basic_istream_wchar, sizeof(basic_istream_wchar), &basic_ios_wchar_rtti_base_descriptor,
546 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
547 ".?AV?$basic_istream@_WU?$char_traits@_W@std@@@std@@")
548 DEFINE_RTTI_DATA3(basic_istream_short, sizeof(basic_istream_wchar), &basic_ios_short_rtti_base_descriptor,
549 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
550 ".?AV?$basic_istream@GU?$char_traits@G@std@@@std@@")
551 DEFINE_RTTI_DATA8(basic_iostream_char, sizeof(basic_iostream_char),
552 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
553 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
554 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
555 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
556 ".?AV?$basic_iostream@DU?$char_traits@D@std@@@std@@")
557 DEFINE_RTTI_DATA8(basic_iostream_wchar, sizeof(basic_iostream_wchar),
558 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
559 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
560 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
561 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
562 ".?AV?$basic_iostream@_WU?$char_traits@_W@std@@@std@@")
563 DEFINE_RTTI_DATA8(basic_iostream_short, sizeof(basic_iostream_wchar),
564 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
565 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
566 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
567 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
568 ".?AV?$basic_iostream@GU?$char_traits@G@std@@@std@@")
569 DEFINE_RTTI_DATA4(basic_ofstream_char, sizeof(basic_ofstream_char),
570 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
571 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
572 ".?AV?$basic_ofstream@DU?$char_traits@D@std@@@std@@")
573 DEFINE_RTTI_DATA4(basic_ofstream_wchar, sizeof(basic_ofstream_wchar),
574 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
575 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
576 ".?AV?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@")
577 DEFINE_RTTI_DATA4(basic_ofstream_short, sizeof(basic_ofstream_wchar),
578 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
579 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
580 ".?AV?$basic_ofstream@GU?$char_traits@G@std@@@std@@")
581 DEFINE_RTTI_DATA4(basic_ifstream_char, sizeof(basic_ifstream_char),
582 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
583 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
584 ".?AV?$basic_ifstream@DU?$char_traits@D@std@@@std@@")
585 DEFINE_RTTI_DATA4(basic_ifstream_wchar, sizeof(basic_ifstream_wchar),
586 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
587 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
588 ".?AV?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@")
589 DEFINE_RTTI_DATA4(basic_ifstream_short, sizeof(basic_ifstream_wchar),
590 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
591 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
592 ".?AV?$basic_ifstream@GU?$char_traits@G@std@@@std@@")
593 DEFINE_RTTI_DATA8(basic_fstream_char, sizeof(basic_fstream_char),
594 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
595 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
596 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
597 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
598 ".?AV?$basic_fstream@DU?$char_traits@D@std@@@std@@")
599 DEFINE_RTTI_DATA8(basic_fstream_wchar, sizeof(basic_fstream_wchar),
600 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
601 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
602 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
603 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
604 ".?AV?$basic_fstream@_WU?$char_traits@_W@std@@@std@@")
605 DEFINE_RTTI_DATA8(basic_fstream_short, sizeof(basic_fstream_wchar),
606 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
607 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
608 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
609 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
610 ".?AV?$basic_fstream@GU?$char_traits@G@std@@@std@@")
611 DEFINE_RTTI_DATA4(basic_ostringstream_char, sizeof(basic_ostringstream_char),
612 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
613 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
614 ".?AV?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
615 DEFINE_RTTI_DATA4(basic_ostringstream_wchar, sizeof(basic_ostringstream_wchar),
616 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
617 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
618 ".?AV?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
619 DEFINE_RTTI_DATA4(basic_ostringstream_short, sizeof(basic_ostringstream_wchar),
620 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
621 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
622 ".?AV?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
623 DEFINE_RTTI_DATA4(basic_istringstream_char, sizeof(basic_istringstream_char),
624 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
625 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
626 ".?AV?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
627 DEFINE_RTTI_DATA4(basic_istringstream_wchar, sizeof(basic_istringstream_wchar),
628 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
629 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
630 ".?AV?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
631 DEFINE_RTTI_DATA4(basic_istringstream_short, sizeof(basic_istringstream_wchar),
632 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
633 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
634 ".?AV?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
635 DEFINE_RTTI_DATA8(basic_stringstream_char, sizeof(basic_stringstream_char),
636 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
637 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
638 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
639 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
640 ".?AV?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
641 DEFINE_RTTI_DATA8(basic_stringstream_wchar, sizeof(basic_stringstream_wchar),
642 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
643 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
644 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
645 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
646 ".?AV?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@")
647 DEFINE_RTTI_DATA8(basic_stringstream_short, sizeof(basic_stringstream_wchar),
648 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
649 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
650 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
651 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
652 ".?AV?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
653 DEFINE_RTTI_DATA1(strstreambuf, sizeof(strstreambuf),
654 &basic_streambuf_char_rtti_base_descriptor, ".?AVstrstreambuf@std@@")
655 DEFINE_RTTI_DATA4(ostrstream, sizeof(ostrstream),
656 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
657 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
658 "?AVostrstream@std@@")
659 DEFINE_RTTI_DATA8(strstream, sizeof(strstream),
660 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
661 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
662 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
663 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
664 "?AVstrstream@std@@")
666 #ifndef __GNUC__
667 void __asm_dummy_vtables(void) {
668 #endif
669 __ASM_VTABLE(iosb,
670 VTABLE_ADD_FUNC(iosb_vector_dtor));
671 __ASM_VTABLE(ios_base,
672 VTABLE_ADD_FUNC(ios_base_vector_dtor));
673 __ASM_VTABLE(basic_ios_char,
674 VTABLE_ADD_FUNC(basic_ios_char_vector_dtor));
675 __ASM_VTABLE(basic_ios_wchar,
676 VTABLE_ADD_FUNC(basic_ios_wchar_vector_dtor));
677 __ASM_VTABLE(basic_ios_short,
678 VTABLE_ADD_FUNC(basic_ios_wchar_vector_dtor));
679 __ASM_VTABLE(basic_streambuf_char,
680 VTABLE_ADD_FUNC(basic_streambuf_char_vector_dtor)
681 VTABLE_ADD_FUNC(basic_streambuf_char_overflow)
682 VTABLE_ADD_FUNC(basic_streambuf_char_pbackfail)
683 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
684 VTABLE_ADD_FUNC(basic_streambuf_char_underflow)
685 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
686 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
687 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
688 VTABLE_ADD_FUNC(basic_streambuf_char_seekoff)
689 VTABLE_ADD_FUNC(basic_streambuf_char_seekpos)
690 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
691 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
692 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
693 __ASM_VTABLE(basic_streambuf_wchar,
694 VTABLE_ADD_FUNC(basic_streambuf_wchar_vector_dtor)
695 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
696 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
697 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
698 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
699 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
700 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
701 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
702 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
703 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
704 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
705 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
706 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
707 __ASM_VTABLE(basic_streambuf_short,
708 VTABLE_ADD_FUNC(basic_streambuf_wchar_vector_dtor)
709 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
710 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
711 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
712 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
713 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
714 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
715 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
716 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
717 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
718 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
719 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
720 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
721 __ASM_VTABLE(basic_filebuf_char,
722 VTABLE_ADD_FUNC(basic_filebuf_char_vector_dtor)
723 VTABLE_ADD_FUNC(basic_filebuf_char_overflow)
724 VTABLE_ADD_FUNC(basic_filebuf_char_pbackfail)
725 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
726 VTABLE_ADD_FUNC(basic_filebuf_char_underflow)
727 VTABLE_ADD_FUNC(basic_filebuf_char_uflow)
728 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
729 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
730 VTABLE_ADD_FUNC(basic_filebuf_char_seekoff)
731 VTABLE_ADD_FUNC(basic_filebuf_char_seekpos)
732 VTABLE_ADD_FUNC(basic_filebuf_char_setbuf)
733 VTABLE_ADD_FUNC(basic_filebuf_char_sync)
734 VTABLE_ADD_FUNC(basic_filebuf_char_imbue));
735 __ASM_VTABLE(basic_filebuf_wchar,
736 VTABLE_ADD_FUNC(basic_filebuf_wchar_vector_dtor)
737 VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow)
738 VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail)
739 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
740 VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow)
741 VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow)
742 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
743 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
744 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff)
745 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos)
746 VTABLE_ADD_FUNC(basic_filebuf_wchar_setbuf)
747 VTABLE_ADD_FUNC(basic_filebuf_wchar_sync)
748 VTABLE_ADD_FUNC(basic_filebuf_wchar_imbue));
749 __ASM_VTABLE(basic_filebuf_short,
750 VTABLE_ADD_FUNC(basic_filebuf_wchar_vector_dtor)
751 VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow)
752 VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail)
753 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
754 VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow)
755 VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow)
756 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
757 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
758 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff)
759 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos)
760 VTABLE_ADD_FUNC(basic_filebuf_short_setbuf)
761 VTABLE_ADD_FUNC(basic_filebuf_wchar_sync)
762 VTABLE_ADD_FUNC(basic_filebuf_short_imbue));
763 __ASM_VTABLE(basic_stringbuf_char,
764 VTABLE_ADD_FUNC(basic_stringbuf_char_vector_dtor)
765 VTABLE_ADD_FUNC(basic_stringbuf_char_overflow)
766 VTABLE_ADD_FUNC(basic_stringbuf_char_pbackfail)
767 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
768 VTABLE_ADD_FUNC(basic_stringbuf_char_underflow)
769 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
770 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
771 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
772 VTABLE_ADD_FUNC(basic_stringbuf_char_seekoff)
773 VTABLE_ADD_FUNC(basic_stringbuf_char_seekpos)
774 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
775 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
776 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
777 __ASM_VTABLE(basic_stringbuf_wchar,
778 VTABLE_ADD_FUNC(basic_stringbuf_wchar_vector_dtor)
779 VTABLE_ADD_FUNC(basic_stringbuf_wchar_overflow)
780 VTABLE_ADD_FUNC(basic_stringbuf_wchar_pbackfail)
781 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
782 VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow)
783 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
784 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
785 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
786 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff)
787 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos)
788 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
789 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
790 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
791 __ASM_VTABLE(basic_stringbuf_short,
792 VTABLE_ADD_FUNC(basic_stringbuf_wchar_vector_dtor)
793 VTABLE_ADD_FUNC(basic_stringbuf_wchar_overflow)
794 VTABLE_ADD_FUNC(basic_stringbuf_wchar_pbackfail)
795 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
796 VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow)
797 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
798 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
799 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
800 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff)
801 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos)
802 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
803 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
804 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
805 __ASM_VTABLE(basic_ostream_char,
806 VTABLE_ADD_FUNC(basic_ostream_char_vector_dtor));
807 __ASM_VTABLE(basic_ostream_wchar,
808 VTABLE_ADD_FUNC(basic_ostream_wchar_vector_dtor));
809 __ASM_VTABLE(basic_ostream_short,
810 VTABLE_ADD_FUNC(basic_ostream_wchar_vector_dtor));
811 __ASM_VTABLE(basic_istream_char,
812 VTABLE_ADD_FUNC(basic_istream_char_vector_dtor));
813 __ASM_VTABLE(basic_istream_wchar,
814 VTABLE_ADD_FUNC(basic_istream_wchar_vector_dtor));
815 __ASM_VTABLE(basic_istream_short,
816 VTABLE_ADD_FUNC(basic_istream_wchar_vector_dtor));
817 __ASM_VTABLE(basic_iostream_char,
818 VTABLE_ADD_FUNC(basic_iostream_char_vector_dtor));
819 __ASM_VTABLE(basic_iostream_wchar,
820 VTABLE_ADD_FUNC(basic_iostream_wchar_vector_dtor));
821 __ASM_VTABLE(basic_iostream_short,
822 VTABLE_ADD_FUNC(basic_iostream_wchar_vector_dtor));
823 __ASM_VTABLE(basic_ofstream_char,
824 VTABLE_ADD_FUNC(basic_ofstream_char_vector_dtor));
825 __ASM_VTABLE(basic_ofstream_wchar,
826 VTABLE_ADD_FUNC(basic_ofstream_wchar_vector_dtor));
827 __ASM_VTABLE(basic_ofstream_short,
828 VTABLE_ADD_FUNC(basic_ofstream_wchar_vector_dtor));
829 __ASM_VTABLE(basic_ifstream_char,
830 VTABLE_ADD_FUNC(basic_ifstream_char_vector_dtor));
831 __ASM_VTABLE(basic_ifstream_wchar,
832 VTABLE_ADD_FUNC(basic_ifstream_wchar_vector_dtor));
833 __ASM_VTABLE(basic_ifstream_short,
834 VTABLE_ADD_FUNC(basic_ifstream_wchar_vector_dtor));
835 __ASM_VTABLE(basic_fstream_char,
836 VTABLE_ADD_FUNC(basic_fstream_char_vector_dtor));
837 __ASM_VTABLE(basic_fstream_wchar,
838 VTABLE_ADD_FUNC(basic_fstream_wchar_vector_dtor));
839 __ASM_VTABLE(basic_fstream_short,
840 VTABLE_ADD_FUNC(basic_fstream_wchar_vector_dtor));
841 __ASM_VTABLE(basic_ostringstream_char,
842 VTABLE_ADD_FUNC(basic_ostringstream_char_vector_dtor));
843 __ASM_VTABLE(basic_ostringstream_wchar,
844 VTABLE_ADD_FUNC(basic_ostringstream_wchar_vector_dtor));
845 __ASM_VTABLE(basic_ostringstream_short,
846 VTABLE_ADD_FUNC(basic_ostringstream_wchar_vector_dtor));
847 __ASM_VTABLE(basic_istringstream_char,
848 VTABLE_ADD_FUNC(basic_istringstream_char_vector_dtor));
849 __ASM_VTABLE(basic_istringstream_wchar,
850 VTABLE_ADD_FUNC(basic_istringstream_wchar_vector_dtor));
851 __ASM_VTABLE(basic_istringstream_short,
852 VTABLE_ADD_FUNC(basic_istringstream_wchar_vector_dtor));
853 __ASM_VTABLE(basic_stringstream_char,
854 VTABLE_ADD_FUNC(basic_stringstream_char_vector_dtor));
855 __ASM_VTABLE(basic_stringstream_wchar,
856 VTABLE_ADD_FUNC(basic_stringstream_wchar_vector_dtor));
857 __ASM_VTABLE(basic_stringstream_short,
858 VTABLE_ADD_FUNC(basic_stringstream_wchar_vector_dtor));
859 __ASM_VTABLE(strstreambuf,
860 VTABLE_ADD_FUNC(strstreambuf_vector_dtor)
861 VTABLE_ADD_FUNC(strstreambuf_overflow)
862 VTABLE_ADD_FUNC(strstreambuf_pbackfail)
863 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
864 VTABLE_ADD_FUNC(strstreambuf_underflow)
865 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
866 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
867 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
868 VTABLE_ADD_FUNC(strstreambuf_seekoff)
869 VTABLE_ADD_FUNC(strstreambuf_seekpos)
870 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
871 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
872 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
873 __ASM_VTABLE(ostrstream,
874 VTABLE_ADD_FUNC(ostrstream_vector_dtor));
875 __ASM_VTABLE(strstream,
876 VTABLE_ADD_FUNC(strstream_vector_dtor));
877 #ifndef __GNUC__
879 #endif
881 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
882 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
883 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp_next, 16)
884 void __thiscall basic_streambuf_char_setp_next(basic_streambuf_char *this, char *first, char *next, char *last)
886 TRACE("(%p %p %p %p)\n", this, first, next, last);
888 this->wbuf = first;
889 this->wpos = next;
890 this->wsize = last-next;
893 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD0@Z */
894 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD0@Z */
895 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp, 12)
896 void __thiscall basic_streambuf_char_setp(basic_streambuf_char *this, char *first, char *last)
898 basic_streambuf_char_setp_next(this, first, first, last);
901 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
902 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
903 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setg, 16)
904 void __thiscall basic_streambuf_char_setg(basic_streambuf_char *this, char *first, char *next, char *last)
906 TRACE("(%p %p %p %p)\n", this, first, next, last);
908 this->rbuf = first;
909 this->rpos = next;
910 this->rsize = last-next;
913 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXXZ */
914 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */
915 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init_empty, 4)
916 void __thiscall basic_streambuf_char__Init_empty(basic_streambuf_char *this)
918 TRACE("(%p)\n", this);
920 this->prbuf = &this->rbuf;
921 this->pwbuf = &this->wbuf;
922 this->prpos = &this->rpos;
923 this->pwpos = &this->wpos;
924 this->prsize = &this->rsize;
925 this->pwsize = &this->wsize;
927 basic_streambuf_char_setp(this, NULL, NULL);
928 basic_streambuf_char_setg(this, NULL, NULL, NULL);
931 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@W4_Uninitialized@1@@Z */
932 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
933 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor_uninitialized, 8)
934 basic_streambuf_char* __thiscall basic_streambuf_char_ctor_uninitialized(basic_streambuf_char *this, int uninitialized)
936 TRACE("(%p %d)\n", this, uninitialized);
937 this->vtable = &MSVCP_basic_streambuf_char_vtable;
938 mutex_ctor(&this->lock);
939 return this;
942 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ */
943 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ */
944 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor, 4)
945 basic_streambuf_char* __thiscall basic_streambuf_char_ctor(basic_streambuf_char *this)
947 TRACE("(%p)\n", this);
949 this->vtable = &MSVCP_basic_streambuf_char_vtable;
950 mutex_ctor(&this->lock);
951 this->loc = MSVCRT_operator_new(sizeof(locale));
952 locale_ctor(this->loc);
953 basic_streambuf_char__Init_empty(this);
955 return this;
958 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
959 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
960 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_dtor, 4)
961 void __thiscall basic_streambuf_char_dtor(basic_streambuf_char *this)
963 TRACE("(%p)\n", this);
965 mutex_dtor(&this->lock);
966 locale_dtor(this->loc);
967 MSVCRT_operator_delete(this->loc);
970 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_vector_dtor, 8)
971 basic_streambuf_char* __thiscall basic_streambuf_char_vector_dtor(basic_streambuf_char *this, unsigned int flags)
973 TRACE("(%p %x)\n", this, flags);
974 if(flags & 2) {
975 /* we have an array, with the number of elements stored before the first object */
976 INT_PTR i, *ptr = (INT_PTR *)this-1;
978 for(i=*ptr-1; i>=0; i--)
979 basic_streambuf_char_dtor(this+i);
980 MSVCRT_operator_delete(ptr);
981 } else {
982 basic_streambuf_char_dtor(this);
983 if(flags & 1)
984 MSVCRT_operator_delete(this);
987 return this;
990 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
991 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
992 static streamsize basic_streambuf_char__Gnavail(const basic_streambuf_char *this)
994 TRACE("(%p)\n", this);
995 return *this->prpos ? *this->prsize : 0;
998 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
999 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1000 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gndec, 4)
1001 char* __thiscall basic_streambuf_char__Gndec(basic_streambuf_char *this)
1003 TRACE("(%p)\n", this);
1004 (*this->prsize)++;
1005 (*this->prpos)--;
1006 return *this->prpos;
1009 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1010 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1011 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gninc, 4)
1012 char* __thiscall basic_streambuf_char__Gninc(basic_streambuf_char *this)
1014 TRACE("(%p)\n", this);
1015 (*this->prsize)--;
1016 return (*this->prpos)++;
1019 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1020 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1021 static char* basic_streambuf_char__Gnpreinc(basic_streambuf_char *this)
1023 TRACE("(%p)\n", this);
1024 (*this->prsize)--;
1025 (*this->prpos)++;
1026 return *this->prpos;
1029 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAPAD0PAH001@Z */
1030 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAPEAD0PEAH001@Z */
1031 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init, 28)
1032 void __thiscall basic_streambuf_char__Init(basic_streambuf_char *this, char **gf, char **gn, int *gc, char **pf, char **pn, int *pc)
1034 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
1036 this->prbuf = gf;
1037 this->pwbuf = pf;
1038 this->prpos = gn;
1039 this->pwpos = pn;
1040 this->prsize = gc;
1041 this->pwsize = pc;
1044 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1045 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1046 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Lock, 4)
1047 void __thiscall basic_streambuf_char__Lock(basic_streambuf_char *this)
1049 TRACE("(%p)\n", this);
1050 mutex_lock(&this->lock);
1053 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
1054 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
1055 static streamsize basic_streambuf_char__Pnavail(const basic_streambuf_char *this)
1057 TRACE("(%p)\n", this);
1058 return *this->pwpos ? *this->pwsize : 0;
1061 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1062 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1063 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pninc, 4)
1064 char* __thiscall basic_streambuf_char__Pninc(basic_streambuf_char *this)
1066 TRACE("(%p)\n", this);
1067 (*this->pwsize)--;
1068 return (*this->pwpos)++;
1071 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1072 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1073 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_underflow, 4)
1074 #define call_basic_streambuf_char_underflow(this) CALL_VTBL_FUNC(this, 16, \
1075 int, (basic_streambuf_char*), (this))
1076 int __thiscall basic_streambuf_char_underflow(basic_streambuf_char *this)
1078 TRACE("(%p)\n", this);
1079 return EOF;
1082 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1083 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1084 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_uflow, 4)
1085 #define call_basic_streambuf_char_uflow(this) CALL_VTBL_FUNC(this, 20, \
1086 int, (basic_streambuf_char*), (this))
1087 int __thiscall basic_streambuf_char_uflow(basic_streambuf_char *this)
1089 int ret;
1091 TRACE("(%p)\n", this);
1093 if(call_basic_streambuf_char_underflow(this)==EOF)
1094 return EOF;
1096 ret = (unsigned char)**this->prpos;
1097 (*this->prsize)--;
1098 (*this->prpos)++;
1099 return ret;
1102 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADIH@Z */
1103 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_K_J@Z */
1104 static streamsize basic_streambuf_char__Xsgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count)
1106 streamsize copied, chunk;
1107 int c;
1109 TRACE("(%p %p %lu %ld)\n", this, ptr, size, count);
1111 for(copied=0; copied<count && size;) {
1112 chunk = basic_streambuf_char__Gnavail(this);
1113 if(chunk > count-copied)
1114 chunk = count-copied;
1116 if(chunk > 0) {
1117 memcpy_s(ptr+copied, size, *this->prpos, chunk);
1118 *this->prpos += chunk;
1119 *this->prsize -= chunk;
1120 copied += chunk;
1121 size -= chunk;
1122 }else if((c = call_basic_streambuf_char_uflow(this)) != EOF) {
1123 ptr[copied] = c;
1124 copied++;
1125 size--;
1126 }else {
1127 break;
1131 return copied;
1134 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
1135 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
1136 static streamsize basic_streambuf_char__Sgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count)
1138 TRACE("(%p %p %lu %ld)\n", this, ptr, size, count);
1139 return basic_streambuf_char__Xsgetn_s(this, ptr, size, count);
1142 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1143 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1144 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Unlock, 4)
1145 void __thiscall basic_streambuf_char__Unlock(basic_streambuf_char *this)
1147 TRACE("(%p)\n", this);
1148 mutex_unlock(&this->lock);
1151 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1152 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1153 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_eback, 4)
1154 char* __thiscall basic_streambuf_char_eback(const basic_streambuf_char *this)
1156 TRACE("(%p)\n", this);
1157 return *this->prbuf;
1160 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1161 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1162 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gptr, 4)
1163 char* __thiscall basic_streambuf_char_gptr(const basic_streambuf_char *this)
1165 TRACE("(%p)\n", this);
1166 return *this->prpos;
1169 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1170 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1171 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_egptr, 4)
1172 char* __thiscall basic_streambuf_char_egptr(const basic_streambuf_char *this)
1174 TRACE("(%p)\n", this);
1175 return *this->prpos+*this->prsize;
1178 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1179 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1180 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_epptr, 4)
1181 char* __thiscall basic_streambuf_char_epptr(const basic_streambuf_char *this)
1183 TRACE("(%p)\n", this);
1184 return *this->pwpos+*this->pwsize;
1187 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1188 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1189 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gbump, 8)
1190 void __thiscall basic_streambuf_char_gbump(basic_streambuf_char *this, int off)
1192 TRACE("(%p %d)\n", this, off);
1193 *this->prpos += off;
1194 *this->prsize -= off;
1197 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ */
1198 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ */
1199 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_getloc, 8)
1200 locale* __thiscall basic_streambuf_char_getloc(const basic_streambuf_char *this, locale *ret)
1202 TRACE("(%p)\n", this);
1203 return locale_copy_ctor(ret, this->loc);
1206 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
1207 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
1208 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_imbue, 8)
1209 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 48, \
1210 void, (basic_streambuf_char*, const locale*), (this, loc))
1211 void __thiscall basic_streambuf_char_imbue(basic_streambuf_char *this, const locale *loc)
1213 TRACE("(%p %p)\n", this, loc);
1216 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1217 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1218 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_overflow, 8)
1219 #define call_basic_streambuf_char_overflow(this, ch) CALL_VTBL_FUNC(this, 4, \
1220 int, (basic_streambuf_char*, int), (this, ch))
1221 int __thiscall basic_streambuf_char_overflow(basic_streambuf_char *this, int ch)
1223 TRACE("(%p %d)\n", this, ch);
1224 return EOF;
1227 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1228 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1229 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbackfail, 8)
1230 #define call_basic_streambuf_char_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, \
1231 int, (basic_streambuf_char*, int), (this, ch))
1232 int __thiscall basic_streambuf_char_pbackfail(basic_streambuf_char *this, int ch)
1234 TRACE("(%p %d)\n", this, ch);
1235 return EOF;
1238 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1239 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1240 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbase, 4)
1241 char* __thiscall basic_streambuf_char_pbase(const basic_streambuf_char *this)
1243 TRACE("(%p)\n", this);
1244 return *this->pwbuf;
1247 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1248 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1249 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbump, 8)
1250 void __thiscall basic_streambuf_char_pbump(basic_streambuf_char *this, int off)
1252 TRACE("(%p %d)\n", this, off);
1253 *this->pwpos += off;
1254 *this->pwsize -= off;
1257 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1258 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1259 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pptr, 4)
1260 char* __thiscall basic_streambuf_char_pptr(const basic_streambuf_char *this)
1262 TRACE("(%p)\n", this);
1263 return *this->pwpos;
1266 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1267 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1268 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubimbue, 12)
1269 locale* __thiscall basic_streambuf_char_pubimbue(basic_streambuf_char *this, locale *ret, const locale *loc)
1271 TRACE("(%p %p)\n", this, loc);
1272 memcpy(ret, this->loc, sizeof(locale));
1273 call_basic_streambuf_char_imbue(this, loc);
1274 locale_copy_ctor(this->loc, loc);
1275 return ret;
1278 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1279 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1280 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 20)
1281 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 32, \
1282 fpos_int*, (basic_streambuf_char*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
1283 fpos_int* __thiscall basic_streambuf_char_seekoff(basic_streambuf_char *this,
1284 fpos_int *ret, streamoff off, int way, int mode)
1286 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
1287 ret->off = -1;
1288 ret->pos = 0;
1289 ret->state = 0;
1290 return ret;
1293 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1294 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1295 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 20)
1296 fpos_int* __thiscall basic_streambuf_char_pubseekoff(basic_streambuf_char *this,
1297 fpos_int *ret, streamoff off, int way, int mode)
1299 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
1300 return call_basic_streambuf_char_seekoff(this, ret, off, way, mode);
1303 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
1304 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
1305 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 20)
1306 fpos_int* __thiscall basic_streambuf_char_pubseekoff_old(basic_streambuf_char *this,
1307 fpos_int *ret, streamoff off, unsigned int way, unsigned int mode)
1309 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
1310 return basic_streambuf_char_pubseekoff(this, ret, off, way, mode);
1313 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1314 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1315 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekpos, 36)
1316 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 36, \
1317 fpos_int*, (basic_streambuf_char*, fpos_int*, fpos_int, int), (this, ret, pos, mode))
1318 fpos_int* __thiscall basic_streambuf_char_seekpos(basic_streambuf_char *this,
1319 fpos_int *ret, fpos_int pos, int mode)
1321 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1322 ret->off = -1;
1323 ret->pos = 0;
1324 ret->state = 0;
1325 return ret;
1328 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1329 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1330 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos, 36)
1331 fpos_int* __thiscall basic_streambuf_char_pubseekpos(basic_streambuf_char *this,
1332 fpos_int *ret, fpos_int pos, int mode)
1334 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1335 return call_basic_streambuf_char_seekpos(this, ret, pos, mode);
1338 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
1339 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
1340 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos_old, 36)
1341 fpos_int* __thiscall basic_streambuf_char_pubseekpos_old(basic_streambuf_char *this,
1342 fpos_int *ret, fpos_int pos, unsigned int mode)
1344 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1345 return basic_streambuf_char_pubseekpos(this, ret, pos, mode);
1348 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PADH@Z */
1349 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z */
1350 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 12)
1351 #define call_basic_streambuf_char_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 40, \
1352 basic_streambuf_char*, (basic_streambuf_char*, char*, streamsize), (this, buf, count))
1353 basic_streambuf_char* __thiscall basic_streambuf_char_setbuf(basic_streambuf_char *this, char *buf, streamsize count)
1355 TRACE("(%p %p %ld)\n", this, buf, count);
1356 return this;
1359 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PADH@Z */
1360 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEAD_J@Z */
1361 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 12)
1362 basic_streambuf_char* __thiscall basic_streambuf_char_pubsetbuf(basic_streambuf_char *this, char *buf, streamsize count)
1364 TRACE("(%p %p %ld)\n", this, buf, count);
1365 return call_basic_streambuf_char_setbuf(this, buf, count);
1368 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1369 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1370 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sync, 4)
1371 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 44, \
1372 int, (basic_streambuf_char*), (this))
1373 int __thiscall basic_streambuf_char_sync(basic_streambuf_char *this)
1375 TRACE("(%p)\n", this);
1376 return 0;
1379 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1380 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1381 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsync, 4)
1382 int __thiscall basic_streambuf_char_pubsync(basic_streambuf_char *this)
1384 TRACE("(%p)\n", this);
1385 return call_basic_streambuf_char_sync(this);
1388 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADH@Z */
1389 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z */
1390 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 12)
1391 #define call_basic_streambuf_char_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, \
1392 streamsize, (basic_streambuf_char*, char*, streamsize), (this, ptr, count))
1393 streamsize __thiscall basic_streambuf_char_xsgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1395 TRACE("(%p %p %ld)\n", this, ptr, count);
1396 return basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1399 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
1400 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
1401 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 12)
1402 streamsize __thiscall basic_streambuf_char_sgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1404 TRACE("(%p %p %ld)\n", this, ptr, count);
1405 return call_basic_streambuf_char_xsgetn(this, ptr, count);
1408 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1409 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ */
1410 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_showmanyc, 4)
1411 #define call_basic_streambuf_char_showmanyc(this) CALL_VTBL_FUNC(this, 12, \
1412 streamsize, (basic_streambuf_char*), (this))
1413 streamsize __thiscall basic_streambuf_char_showmanyc(basic_streambuf_char *this)
1415 TRACE("(%p)\n", this);
1416 return 0;
1419 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1420 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JXZ */
1421 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_in_avail, 4)
1422 streamsize __thiscall basic_streambuf_char_in_avail(basic_streambuf_char *this)
1424 streamsize ret;
1426 TRACE("(%p)\n", this);
1428 ret = basic_streambuf_char__Gnavail(this);
1429 return ret ? ret : call_basic_streambuf_char_showmanyc(this);
1432 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1433 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1434 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputbackc, 8)
1435 int __thiscall basic_streambuf_char_sputbackc(basic_streambuf_char *this, char ch)
1437 TRACE("(%p %d)\n", this, ch);
1438 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
1439 (*this->prsize)++;
1440 (*this->prpos)--;
1441 return (unsigned char)ch;
1444 return call_basic_streambuf_char_pbackfail(this, (unsigned char)ch);
1447 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1448 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1449 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputc, 8)
1450 int __thiscall basic_streambuf_char_sputc(basic_streambuf_char *this, char ch)
1452 TRACE("(%p %d)\n", this, ch);
1453 return basic_streambuf_char__Pnavail(this) ?
1454 (*basic_streambuf_char__Pninc(this) = ch) :
1455 call_basic_streambuf_char_overflow(this, (unsigned char)ch);
1458 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1459 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1460 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sungetc, 4)
1461 int __thiscall basic_streambuf_char_sungetc(basic_streambuf_char *this)
1463 TRACE("(%p)\n", this);
1464 if(*this->prpos && *this->prpos>*this->prbuf) {
1465 (*this->prsize)++;
1466 (*this->prpos)--;
1467 return (unsigned char)**this->prpos;
1470 return call_basic_streambuf_char_pbackfail(this, EOF);
1473 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1474 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1475 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_stossc, 4)
1476 void __thiscall basic_streambuf_char_stossc(basic_streambuf_char *this)
1478 TRACE("(%p)\n", this);
1479 if(basic_streambuf_char__Gnavail(this))
1480 basic_streambuf_char__Gninc(this);
1481 else
1482 call_basic_streambuf_char_uflow(this);
1485 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1486 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1487 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sbumpc, 4)
1488 int __thiscall basic_streambuf_char_sbumpc(basic_streambuf_char *this)
1490 TRACE("(%p)\n", this);
1491 return basic_streambuf_char__Gnavail(this) ?
1492 (int)(unsigned char)*basic_streambuf_char__Gninc(this) : call_basic_streambuf_char_uflow(this);
1495 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1496 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1497 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetc, 4)
1498 int __thiscall basic_streambuf_char_sgetc(basic_streambuf_char *this)
1500 TRACE("(%p)\n", this);
1501 return basic_streambuf_char__Gnavail(this) ?
1502 (int)(unsigned char)*basic_streambuf_char_gptr(this) : call_basic_streambuf_char_underflow(this);
1505 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1506 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1507 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_snextc, 4)
1508 int __thiscall basic_streambuf_char_snextc(basic_streambuf_char *this)
1510 TRACE("(%p)\n", this);
1512 if(basic_streambuf_char__Gnavail(this) > 1)
1513 return (unsigned char)*basic_streambuf_char__Gnpreinc(this);
1514 return basic_streambuf_char_sbumpc(this)==EOF ?
1515 EOF : basic_streambuf_char_sgetc(this);
1518 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPBDH@Z */
1519 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z */
1520 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 12)
1521 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 28, \
1522 streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1523 streamsize __thiscall basic_streambuf_char_xsputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1525 streamsize copied, chunk;
1527 TRACE("(%p %p %ld)\n", this, ptr, count);
1529 for(copied=0; copied<count;) {
1530 chunk = basic_streambuf_char__Pnavail(this);
1531 if(chunk > count-copied)
1532 chunk = count-copied;
1534 if(chunk > 0) {
1535 memcpy(*this->pwpos, ptr+copied, chunk);
1536 *this->pwpos += chunk;
1537 *this->pwsize -= chunk;
1538 copied += chunk;
1539 }else if(call_basic_streambuf_char_overflow(this, (unsigned char)ptr[copied]) != EOF) {
1540 copied++;
1541 }else {
1542 break;
1546 return copied;
1549 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z */
1550 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z */
1551 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 12)
1552 streamsize __thiscall basic_streambuf_char_sputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1554 TRACE("(%p %p %ld)\n", this, ptr, count);
1555 return call_basic_streambuf_char_xsputn(this, ptr, count);
1558 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
1559 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
1560 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
1561 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
1562 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp_next, 16)
1563 void __thiscall basic_streambuf_wchar_setp_next(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
1565 TRACE("(%p %p %p %p)\n", this, first, next, last);
1567 this->wbuf = first;
1568 this->wpos = next;
1569 this->wsize = last-next;
1572 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W0@Z */
1573 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W0@Z */
1574 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG0@Z */
1575 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG0@Z */
1576 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp, 12)
1577 void __thiscall basic_streambuf_wchar_setp(basic_streambuf_wchar *this, wchar_t *first, wchar_t *last)
1579 basic_streambuf_wchar_setp_next(this, first, first, last);
1582 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
1583 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
1584 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
1585 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
1586 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setg, 16)
1587 void __thiscall basic_streambuf_wchar_setg(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
1589 TRACE("(%p %p %p %p)\n", this, first, next, last);
1591 this->rbuf = first;
1592 this->rpos = next;
1593 this->rsize = last-next;
1596 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXXZ */
1597 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXXZ */
1598 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXXZ */
1599 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */
1600 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init_empty, 4)
1601 void __thiscall basic_streambuf_wchar__Init_empty(basic_streambuf_wchar *this)
1603 TRACE("(%p)\n", this);
1605 this->prbuf = &this->rbuf;
1606 this->pwbuf = &this->wbuf;
1607 this->prpos = &this->rpos;
1608 this->pwpos = &this->wpos;
1609 this->prsize = &this->rsize;
1610 this->pwsize = &this->wsize;
1612 basic_streambuf_wchar_setp(this, NULL, NULL);
1613 basic_streambuf_wchar_setg(this, NULL, NULL, NULL);
1616 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1617 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1618 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor_uninitialized, 8)
1619 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
1621 TRACE("(%p %d)\n", this, uninitialized);
1622 this->vtable = &MSVCP_basic_streambuf_wchar_vtable;
1623 mutex_ctor(&this->lock);
1624 return this;
1627 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1628 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1629 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor_uninitialized, 8)
1630 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
1632 TRACE("(%p %d)\n", this, uninitialized);
1633 basic_streambuf_wchar_ctor_uninitialized(this, uninitialized);
1634 this->vtable = &MSVCP_basic_streambuf_short_vtable;
1635 return this;
1638 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
1639 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
1640 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor, 4)
1641 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor(basic_streambuf_wchar *this)
1643 TRACE("(%p)\n", this);
1645 this->vtable = &MSVCP_basic_streambuf_wchar_vtable;
1646 mutex_ctor(&this->lock);
1647 this->loc = MSVCRT_operator_new(sizeof(locale));
1648 locale_ctor(this->loc);
1649 basic_streambuf_wchar__Init_empty(this);
1651 return this;
1654 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@XZ */
1655 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@XZ */
1656 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor, 4)
1657 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor(basic_streambuf_wchar *this)
1659 TRACE("(%p)\n", this);
1660 basic_streambuf_wchar_ctor(this);
1661 this->vtable = &MSVCP_basic_streambuf_short_vtable;
1662 return this;
1665 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
1666 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
1667 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
1668 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
1669 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_dtor, 4)
1670 void __thiscall basic_streambuf_wchar_dtor(basic_streambuf_wchar *this)
1672 TRACE("(%p)\n", this);
1674 mutex_dtor(&this->lock);
1675 locale_dtor(this->loc);
1676 MSVCRT_operator_delete(this->loc);
1679 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_vector_dtor, 8)
1680 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_vector_dtor(basic_streambuf_wchar *this, unsigned int flags)
1682 TRACE("(%p %x)\n", this, flags);
1683 if(flags & 2) {
1684 /* we have an array, with the number of elements stored before the first object */
1685 INT_PTR i, *ptr = (INT_PTR *)this-1;
1687 for(i=*ptr-1; i>=0; i--)
1688 basic_streambuf_wchar_dtor(this+i);
1689 MSVCRT_operator_delete(ptr);
1690 } else {
1691 basic_streambuf_wchar_dtor(this);
1692 if(flags & 1)
1693 MSVCRT_operator_delete(this);
1696 return this;
1699 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
1700 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
1701 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
1702 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
1703 static streamsize basic_streambuf_wchar__Gnavail(const basic_streambuf_wchar *this)
1705 TRACE("(%p)\n", this);
1706 return *this->prpos ? *this->prsize : 0;
1709 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1710 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1711 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1712 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1713 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gndec, 4)
1714 wchar_t* __thiscall basic_streambuf_wchar__Gndec(basic_streambuf_wchar *this)
1716 TRACE("(%p)\n", this);
1717 (*this->prsize)++;
1718 (*this->prpos)--;
1719 return *this->prpos;
1722 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1723 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1724 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1725 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1726 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gninc, 4)
1727 wchar_t* __thiscall basic_streambuf_wchar__Gninc(basic_streambuf_wchar *this)
1729 TRACE("(%p)\n", this);
1730 (*this->prsize)--;
1731 return (*this->prpos)++;
1734 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1735 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1736 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1737 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1738 static wchar_t* basic_streambuf_wchar__Gnpreinc(basic_streambuf_wchar *this)
1740 TRACE("(%p)\n", this);
1741 (*this->prsize)--;
1742 (*this->prpos)++;
1743 return *this->prpos;
1746 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPAPA_W0PAH001@Z */
1747 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAPEA_W0PEAH001@Z */
1748 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAPAG0PAH001@Z */
1749 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAPEAG0PEAH001@Z */
1750 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init, 28)
1751 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)
1753 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
1755 this->prbuf = gf;
1756 this->pwbuf = pf;
1757 this->prpos = gn;
1758 this->pwpos = pn;
1759 this->prsize = gc;
1760 this->pwsize = pc;
1763 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
1764 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
1765 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
1766 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
1767 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Lock, 4)
1768 void __thiscall basic_streambuf_wchar__Lock(basic_streambuf_wchar *this)
1770 TRACE("(%p)\n", this);
1771 mutex_lock(&this->lock);
1774 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
1775 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
1776 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
1777 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
1778 static streamsize basic_streambuf_wchar__Pnavail(const basic_streambuf_wchar *this)
1780 TRACE("(%p)\n", this);
1781 return *this->pwpos ? *this->pwsize : 0;
1784 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1785 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1786 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1787 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1788 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pninc, 4)
1789 wchar_t* __thiscall basic_streambuf_wchar__Pninc(basic_streambuf_wchar *this)
1791 TRACE("(%p)\n", this);
1792 (*this->pwsize)--;
1793 return (*this->pwpos)++;
1796 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
1797 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
1798 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
1799 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
1800 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_underflow, 4)
1801 #define call_basic_streambuf_wchar_underflow(this) CALL_VTBL_FUNC(this, 16, \
1802 unsigned short, (basic_streambuf_wchar*), (this))
1803 unsigned short __thiscall basic_streambuf_wchar_underflow(basic_streambuf_wchar *this)
1805 TRACE("(%p)\n", this);
1806 return WEOF;
1809 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
1810 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
1811 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
1812 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
1813 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_uflow, 4)
1814 #define call_basic_streambuf_wchar_uflow(this) CALL_VTBL_FUNC(this, 20, \
1815 unsigned short, (basic_streambuf_wchar*), (this))
1816 unsigned short __thiscall basic_streambuf_wchar_uflow(basic_streambuf_wchar *this)
1818 int ret;
1820 TRACE("(%p)\n", this);
1822 if(call_basic_streambuf_wchar_underflow(this)==WEOF)
1823 return WEOF;
1825 ret = **this->prpos;
1826 (*this->prsize)--;
1827 (*this->prpos)++;
1828 return ret;
1831 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WIH@Z */
1832 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_K_J@Z */
1833 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGIH@Z */
1834 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_K_J@Z */
1835 static streamsize basic_streambuf_wchar__Xsgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, MSVCP_size_t size, streamsize count)
1837 streamsize copied, chunk;
1838 unsigned short c;
1840 TRACE("(%p %p %lu %ld)\n", this, ptr, size, count);
1842 for(copied=0; copied<count && size;) {
1843 chunk = basic_streambuf_wchar__Gnavail(this);
1844 if(chunk > count-copied)
1845 chunk = count-copied;
1847 if(chunk > 0) {
1848 memcpy_s(ptr+copied, size, *this->prpos, chunk*sizeof(wchar_t));
1849 *this->prpos += chunk;
1850 *this->prsize -= chunk;
1851 copied += chunk;
1852 size -= chunk*sizeof(wchar_t);
1853 }else if((c = call_basic_streambuf_wchar_uflow(this)) != WEOF) {
1854 ptr[copied] = c;
1855 copied++;
1856 size--;
1857 }else {
1858 break;
1862 return copied;
1865 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
1866 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
1867 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
1868 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
1869 static streamsize basic_streambuf_wchar__Sgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, MSVCP_size_t size, streamsize count)
1871 TRACE("(%p %p %lu %ld)\n", this, ptr, size, count);
1872 return basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count);
1875 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
1876 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
1877 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
1878 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
1879 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Unlock, 4)
1880 void __thiscall basic_streambuf_wchar__Unlock(basic_streambuf_wchar *this)
1882 TRACE("(%p)\n", this);
1883 mutex_unlock(&this->lock);
1886 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1887 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1888 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1889 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1890 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_eback, 4)
1891 wchar_t* __thiscall basic_streambuf_wchar_eback(const basic_streambuf_wchar *this)
1893 TRACE("(%p)\n", this);
1894 return *this->prbuf;
1897 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1898 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1899 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1900 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1901 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gptr, 4)
1902 wchar_t* __thiscall basic_streambuf_wchar_gptr(const basic_streambuf_wchar *this)
1904 TRACE("(%p)\n", this);
1905 return *this->prpos;
1908 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1909 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1910 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1911 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1912 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_egptr, 4)
1913 wchar_t* __thiscall basic_streambuf_wchar_egptr(const basic_streambuf_wchar *this)
1915 TRACE("(%p)\n", this);
1916 return *this->prpos+*this->prsize;
1919 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1920 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1921 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1922 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1923 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_epptr, 4)
1924 wchar_t* __thiscall basic_streambuf_wchar_epptr(const basic_streambuf_wchar *this)
1926 TRACE("(%p)\n", this);
1927 return *this->pwpos+*this->pwsize;
1930 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
1931 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
1932 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
1933 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
1934 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gbump, 8)
1935 void __thiscall basic_streambuf_wchar_gbump(basic_streambuf_wchar *this, int off)
1937 TRACE("(%p %d)\n", this, off);
1938 *this->prpos += off;
1939 *this->prsize -= off;
1942 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QBE?AVlocale@2@XZ */
1943 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEBA?AVlocale@2@XZ */
1944 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QBE?AVlocale@2@XZ */
1945 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEBA?AVlocale@2@XZ */
1946 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_getloc, 8)
1947 locale* __thiscall basic_streambuf_wchar_getloc(const basic_streambuf_wchar *this, locale *ret)
1949 TRACE("(%p)\n", this);
1950 return locale_copy_ctor(ret, this->loc);
1953 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
1954 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
1955 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
1956 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
1957 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_imbue, 8)
1958 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 48, \
1959 void, (basic_streambuf_wchar*, const locale*), (this, loc))
1960 void __thiscall basic_streambuf_wchar_imbue(basic_streambuf_wchar *this, const locale *loc)
1962 TRACE("(%p %p)\n", this, loc);
1965 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
1966 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
1967 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
1968 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
1969 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_overflow, 8)
1970 #define call_basic_streambuf_wchar_overflow(this, ch) CALL_VTBL_FUNC(this, 4, \
1971 unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
1972 unsigned short __thiscall basic_streambuf_wchar_overflow(basic_streambuf_wchar *this, unsigned short ch)
1974 TRACE("(%p %d)\n", this, ch);
1975 return WEOF;
1978 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
1979 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
1980 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
1981 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
1982 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbackfail, 8)
1983 #define call_basic_streambuf_wchar_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, \
1984 unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
1985 unsigned short __thiscall basic_streambuf_wchar_pbackfail(basic_streambuf_wchar *this, unsigned short ch)
1987 TRACE("(%p %d)\n", this, ch);
1988 return WEOF;
1991 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1992 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1993 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1994 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1995 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbase, 4)
1996 wchar_t* __thiscall basic_streambuf_wchar_pbase(const basic_streambuf_wchar *this)
1998 TRACE("(%p)\n", this);
1999 return *this->pwbuf;
2002 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
2003 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
2004 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
2005 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
2006 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbump, 8)
2007 void __thiscall basic_streambuf_wchar_pbump(basic_streambuf_wchar *this, int off)
2009 TRACE("(%p %d)\n", this, off);
2010 *this->pwpos += off;
2011 *this->pwsize -= off;
2014 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
2015 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
2016 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
2017 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
2018 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pptr, 4)
2019 wchar_t* __thiscall basic_streambuf_wchar_pptr(const basic_streambuf_wchar *this)
2021 TRACE("(%p)\n", this);
2022 return *this->pwpos;
2025 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
2026 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
2027 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
2028 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
2029 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubimbue, 12)
2030 locale* __thiscall basic_streambuf_wchar_pubimbue(basic_streambuf_wchar *this, locale *ret, const locale *loc)
2032 TRACE("(%p %p)\n", this, loc);
2033 memcpy(ret, this->loc, sizeof(locale));
2034 call_basic_streambuf_wchar_imbue(this, loc);
2035 locale_copy_ctor(this->loc, loc);
2036 return ret;
2039 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2040 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2041 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2042 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2043 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekoff, 20)
2044 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 32, \
2045 fpos_int*, (basic_streambuf_wchar*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
2046 fpos_int* __thiscall basic_streambuf_wchar_seekoff(basic_streambuf_wchar *this,
2047 fpos_int *ret, streamoff off, int way, int mode)
2049 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
2050 ret->off = -1;
2051 ret->pos = 0;
2052 ret->state = 0;
2053 return ret;
2056 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
2057 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
2058 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
2059 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
2060 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff, 20)
2061 fpos_int* __thiscall basic_streambuf_wchar_pubseekoff(basic_streambuf_wchar *this,
2062 fpos_int *ret, streamoff off, int way, int mode)
2064 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
2065 return call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode);
2068 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
2069 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
2070 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
2071 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
2072 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff_old, 20)
2073 fpos_int* __thiscall basic_streambuf_wchar_pubseekoff_old(basic_streambuf_wchar *this,
2074 fpos_int *ret, streamoff off, unsigned int way, unsigned int mode)
2076 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
2077 return basic_streambuf_wchar_pubseekoff(this, ret, off, way, mode);
2080 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2081 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2082 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2083 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2084 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekpos, 36)
2085 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 36, \
2086 fpos_int*, (basic_streambuf_wchar*, fpos_int*, fpos_int, int), (this, ret, pos, mode))
2087 fpos_int* __thiscall basic_streambuf_wchar_seekpos(basic_streambuf_wchar *this,
2088 fpos_int *ret, fpos_int pos, int mode)
2090 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
2091 ret->off = -1;
2092 ret->pos = 0;
2093 ret->state = 0;
2094 return ret;
2097 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
2098 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
2099 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
2100 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
2101 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos, 36)
2102 fpos_int* __thiscall basic_streambuf_wchar_pubseekpos(basic_streambuf_wchar *this,
2103 fpos_int *ret, fpos_int pos, int mode)
2105 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
2106 return call_basic_streambuf_wchar_seekpos(this, ret, pos, mode);
2109 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
2110 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
2111 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
2112 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
2113 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos_old, 36)
2114 fpos_int* __thiscall basic_streambuf_wchar_pubseekpos_old(basic_streambuf_wchar *this,
2115 fpos_int *ret, fpos_int pos, unsigned int mode)
2117 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
2118 return basic_streambuf_wchar_pubseekpos(this, ret, pos, mode);
2121 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEPAV12@PA_WH@Z */
2122 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV12@PEA_W_J@Z */
2123 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEPAV12@PAGH@Z */
2124 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAPEAV12@PEAG_J@Z */
2125 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setbuf, 12)
2126 #define call_basic_streambuf_wchar_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 40, \
2127 basic_streambuf_wchar*, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, buf, count))
2128 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_setbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
2130 TRACE("(%p %p %ld)\n", this, buf, count);
2131 return this;
2134 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PA_WH@Z */
2135 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEA_W_J@Z */
2136 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PAGH@Z */
2137 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEAG_J@Z */
2138 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsetbuf, 12)
2139 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_pubsetbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
2141 TRACE("(%p %p %ld)\n", this, buf, count);
2142 return call_basic_streambuf_wchar_setbuf(this, buf, count);
2145 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
2146 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
2147 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2148 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
2149 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sync, 4)
2150 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 44, \
2151 int, (basic_streambuf_wchar*), (this))
2152 int __thiscall basic_streambuf_wchar_sync(basic_streambuf_wchar *this)
2154 TRACE("(%p)\n", this);
2155 return 0;
2158 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
2159 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
2160 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
2161 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHXZ */
2162 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsync, 4)
2163 int __thiscall basic_streambuf_wchar_pubsync(basic_streambuf_wchar *this)
2165 TRACE("(%p)\n", this);
2166 return call_basic_streambuf_wchar_sync(this);
2169 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WH@Z */
2170 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_J@Z */
2171 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGH@Z */
2172 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_J@Z */
2173 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsgetn, 12)
2174 #define call_basic_streambuf_wchar_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, \
2175 streamsize, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, ptr, count))
2176 streamsize __thiscall basic_streambuf_wchar_xsgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2178 TRACE("(%p %p %ld)\n", this, ptr, count);
2179 return call_basic_streambuf_wchar_xsgetn(this, ptr, count);
2182 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
2183 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
2184 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
2185 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
2186 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetn, 12)
2187 streamsize __thiscall basic_streambuf_wchar_sgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2189 TRACE("(%p %p %ld)\n", this, ptr, count);
2190 return call_basic_streambuf_wchar_xsgetn(this, ptr, count);
2193 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
2194 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JXZ */
2195 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2196 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JXZ */
2197 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_showmanyc, 4)
2198 #define call_basic_streambuf_wchar_showmanyc(this) CALL_VTBL_FUNC(this, 12, \
2199 streamsize, (basic_streambuf_wchar*), (this))
2200 streamsize __thiscall basic_streambuf_wchar_showmanyc(basic_streambuf_wchar *this)
2202 TRACE("(%p)\n", this);
2203 return 0;
2206 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
2207 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JXZ */
2208 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
2209 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JXZ */
2210 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_in_avail, 4)
2211 streamsize __thiscall basic_streambuf_wchar_in_avail(basic_streambuf_wchar *this)
2213 streamsize ret;
2215 TRACE("(%p)\n", this);
2217 ret = basic_streambuf_wchar__Gnavail(this);
2218 return ret ? ret : call_basic_streambuf_wchar_showmanyc(this);
2221 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
2222 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
2223 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
2224 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
2225 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputbackc, 8)
2226 unsigned short __thiscall basic_streambuf_wchar_sputbackc(basic_streambuf_wchar *this, wchar_t ch)
2228 TRACE("(%p %d)\n", this, ch);
2229 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
2230 (*this->prsize)++;
2231 (*this->prpos)--;
2232 return ch;
2235 return call_basic_streambuf_wchar_pbackfail(this, ch);
2238 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
2239 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
2240 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
2241 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHG@Z */
2242 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputc, 8)
2243 unsigned short __thiscall basic_streambuf_wchar_sputc(basic_streambuf_wchar *this, wchar_t ch)
2245 TRACE("(%p %d)\n", this, ch);
2246 return basic_streambuf_wchar__Pnavail(this) ?
2247 (*basic_streambuf_wchar__Pninc(this) = ch) :
2248 call_basic_streambuf_wchar_overflow(this, ch);
2251 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2252 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2253 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2254 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2255 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sungetc, 4)
2256 unsigned short __thiscall basic_streambuf_wchar_sungetc(basic_streambuf_wchar *this)
2258 TRACE("(%p)\n", this);
2259 if(*this->prpos && *this->prpos>*this->prbuf) {
2260 (*this->prsize)++;
2261 (*this->prpos)--;
2262 return **this->prpos;
2265 return call_basic_streambuf_wchar_pbackfail(this, WEOF);
2268 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2269 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2270 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2271 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2272 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_stossc, 4)
2273 void __thiscall basic_streambuf_wchar_stossc(basic_streambuf_wchar *this)
2275 TRACE("(%p)\n", this);
2276 if(basic_streambuf_wchar__Gnavail(this))
2277 basic_streambuf_wchar__Gninc(this);
2278 else
2279 call_basic_streambuf_wchar_uflow(this);
2282 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2283 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2284 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2285 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2286 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sbumpc, 4)
2287 unsigned short __thiscall basic_streambuf_wchar_sbumpc(basic_streambuf_wchar *this)
2289 TRACE("(%p)\n", this);
2290 return basic_streambuf_wchar__Gnavail(this) ?
2291 *basic_streambuf_wchar__Gninc(this) : call_basic_streambuf_wchar_uflow(this);
2294 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2295 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2296 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2297 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2298 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetc, 4)
2299 unsigned short __thiscall basic_streambuf_wchar_sgetc(basic_streambuf_wchar *this)
2301 TRACE("(%p)\n", this);
2302 return basic_streambuf_wchar__Gnavail(this) ?
2303 *basic_streambuf_wchar_gptr(this) : call_basic_streambuf_wchar_underflow(this);
2306 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2307 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2308 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2309 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2310 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_snextc, 4)
2311 unsigned short __thiscall basic_streambuf_wchar_snextc(basic_streambuf_wchar *this)
2313 TRACE("(%p)\n", this);
2315 if(basic_streambuf_wchar__Gnavail(this) > 1)
2316 return *basic_streambuf_wchar__Gnpreinc(this);
2317 return basic_streambuf_wchar_sbumpc(this)==WEOF ?
2318 WEOF : basic_streambuf_wchar_sgetc(this);
2321 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPB_WH@Z */
2322 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEB_W_J@Z */
2323 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPBGH@Z */
2324 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEBG_J@Z */
2325 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsputn, 12)
2326 #define call_basic_streambuf_wchar_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 28, \
2327 streamsize, (basic_streambuf_wchar*, const wchar_t*, streamsize), (this, ptr, count))
2328 streamsize __thiscall basic_streambuf_wchar_xsputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2330 streamsize copied, chunk;
2332 TRACE("(%p %p %ld)\n", this, ptr, count);
2334 for(copied=0; copied<count;) {
2335 chunk = basic_streambuf_wchar__Pnavail(this);
2336 if(chunk > count-copied)
2337 chunk = count-copied;
2339 if(chunk > 0) {
2340 memcpy(*this->pwpos, ptr+copied, chunk*sizeof(wchar_t));
2341 *this->pwpos += chunk;
2342 *this->pwsize -= chunk;
2343 copied += chunk;
2344 }else if(call_basic_streambuf_wchar_overflow(this, ptr[copied]) != WEOF) {
2345 copied++;
2346 }else {
2347 break;
2351 return copied;
2354 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPB_WH@Z */
2355 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEB_W_J@Z */
2356 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPBGH@Z */
2357 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEBG_J@Z */
2358 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputn, 12)
2359 streamsize __thiscall basic_streambuf_wchar_sputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2361 TRACE("(%p %p %ld)\n", this, ptr, count);
2362 return call_basic_streambuf_wchar_xsputn(this, ptr, count);
2365 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
2366 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
2367 int basic_filebuf_char__Init__Stinit = 0;
2369 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
2370 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
2371 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Init, 12)
2372 void __thiscall basic_filebuf_char__Init(basic_filebuf_char *this, FILE *file, basic_filebuf__Initfl which)
2374 TRACE("(%p %p %d)\n", this, file, which);
2376 this->cvt = NULL;
2377 this->wrotesome = FALSE;
2378 this->state = basic_filebuf_char__Init__Stinit;
2379 this->close = (which == INITFL_open);
2380 this->file = file;
2382 basic_streambuf_char__Init_empty(&this->base);
2383 if(file)
2384 basic_streambuf_char__Init(&this->base, &file->_base, &file->_ptr,
2385 &file->_cnt, &file->_base, &file->_ptr, &file->_cnt);
2388 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z */
2389 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z */
2390 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt, 8)
2391 void __thiscall basic_filebuf_char__Initcvt(basic_filebuf_char *this, codecvt_char *cvt)
2393 TRACE("(%p %p)\n", this, cvt);
2395 if(codecvt_base_always_noconv(&cvt->base)) {
2396 this->cvt = NULL;
2397 }else {
2398 basic_streambuf_char__Init_empty(&this->base);
2399 this->cvt = cvt;
2403 /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAE_NXZ */
2404 /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAA_NXZ */
2405 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Endwrite, 4)
2406 MSVCP_bool __thiscall basic_filebuf_char__Endwrite(basic_filebuf_char *this)
2408 TRACE("(%p)\n", this);
2410 if(!this->wrotesome || !this->cvt)
2411 return TRUE;
2414 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
2415 return FALSE;
2417 while(1) {
2418 /* TODO: check if we need a dynamic buffer here */
2419 char buf[128];
2420 char *next;
2421 int ret;
2423 ret = codecvt_char_unshift(this->cvt, &this->state, buf, buf+sizeof(buf), &next);
2424 switch(ret) {
2425 case CODECVT_ok:
2426 this->wrotesome = FALSE;
2427 /* fall through */
2428 case CODECVT_partial:
2429 if(!fwrite(buf, next-buf, 1, this->file))
2430 return FALSE;
2431 if(this->wrotesome)
2432 break;
2433 /* fall through */
2434 case CODECVT_noconv:
2435 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
2436 return FALSE;
2437 return TRUE;
2438 default:
2439 return FALSE;
2444 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@XZ */
2445 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@XZ */
2446 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_close, 4)
2447 basic_filebuf_char* __thiscall basic_filebuf_char_close(basic_filebuf_char *this)
2449 basic_filebuf_char *ret = this;
2451 TRACE("(%p)\n", this);
2453 if(!this->file)
2454 return NULL;
2456 /* TODO: handle exceptions */
2457 if(!basic_filebuf_char__Endwrite(this))
2458 ret = NULL;
2459 if(fclose(this->file))
2460 ret = NULL;
2462 basic_filebuf_char__Init(this, NULL, INITFL_close);
2463 return ret;
2466 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
2467 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
2468 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_file, 8)
2469 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_file(basic_filebuf_char *this, FILE *file)
2471 TRACE("(%p %p)\n", this, file);
2473 basic_streambuf_char_ctor(&this->base);
2474 this->base.vtable = &MSVCP_basic_filebuf_char_vtable;
2476 basic_filebuf_char__Init(this, file, INITFL_new);
2477 return this;
2480 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
2481 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
2482 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor, 4)
2483 basic_filebuf_char* __thiscall basic_filebuf_char_ctor(basic_filebuf_char *this)
2485 return basic_filebuf_char_ctor_file(this, NULL);
2488 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
2489 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
2490 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_uninitialized, 8)
2491 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_uninitialized(basic_filebuf_char *this, int uninitialized)
2493 TRACE("(%p %d)\n", this, uninitialized);
2495 basic_streambuf_char_ctor(&this->base);
2496 this->base.vtable = &MSVCP_basic_filebuf_char_vtable;
2497 return this;
2500 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
2501 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
2502 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_dtor, 4)
2503 void __thiscall basic_filebuf_char_dtor(basic_filebuf_char *this)
2505 TRACE("(%p)\n", this);
2507 if(this->close)
2508 basic_filebuf_char_close(this);
2509 basic_streambuf_char_dtor(&this->base);
2512 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_vector_dtor, 8)
2513 basic_filebuf_char* __thiscall basic_filebuf_char_vector_dtor(basic_filebuf_char *this, unsigned int flags)
2515 TRACE("(%p %x)\n", this, flags);
2516 if(flags & 2) {
2517 /* we have an array, with the number of elements stored before the first object */
2518 INT_PTR i, *ptr = (INT_PTR *)this-1;
2520 for(i=*ptr-1; i>=0; i--)
2521 basic_filebuf_char_dtor(this+i);
2522 MSVCRT_operator_delete(ptr);
2523 } else {
2524 basic_filebuf_char_dtor(this);
2525 if(flags & 1)
2526 MSVCRT_operator_delete(this);
2529 return this;
2532 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QBE_NXZ */
2533 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
2534 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_is_open, 4)
2535 MSVCP_bool __thiscall basic_filebuf_char_is_open(const basic_filebuf_char *this)
2537 TRACE("(%p)\n", this);
2538 return this->file != NULL;
2541 /* ?_Fiopen@std@@YAPAU_iobuf@@PB_WHH@Z */
2542 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEB_WHH@Z */
2543 static FILE* _Fiopen_wchar(const wchar_t *name, int mode, int prot)
2545 static const wchar_t rW[] = {'r',0};
2546 static const struct {
2547 int mode;
2548 const wchar_t str[4];
2549 const wchar_t str_bin[4];
2550 } str_mode[] = {
2551 {OPENMODE_out, {'w',0}, {'w','b',0}},
2552 {OPENMODE_out|OPENMODE_app, {'a',0}, {'a','b',0}},
2553 {OPENMODE_app, {'a',0}, {'a','b',0}},
2554 {OPENMODE_out|OPENMODE_trunc, {'w',0}, {'w','b',0}},
2555 {OPENMODE_in, {'r',0}, {'r','b',0}},
2556 {OPENMODE_in|OPENMODE_out, {'r','+',0}, {'r','+','b',0}},
2557 {OPENMODE_in|OPENMODE_out|OPENMODE_trunc, {'w','+',0}, {'w','+','b',0}},
2558 {OPENMODE_in|OPENMODE_out|OPENMODE_app, {'a','+',0}, {'a','+','b',0}},
2559 {OPENMODE_in|OPENMODE_app, {'a','+',0}, {'a','+','b',0}}
2562 int real_mode = mode & ~(OPENMODE_ate|OPENMODE__Nocreate|OPENMODE__Noreplace|OPENMODE_binary);
2563 unsigned int mode_idx;
2564 FILE *f = NULL;
2566 TRACE("(%s %d %d)\n", debugstr_w(name), mode, prot);
2568 for(mode_idx=0; mode_idx<sizeof(str_mode)/sizeof(str_mode[0]); mode_idx++)
2569 if(str_mode[mode_idx].mode == real_mode)
2570 break;
2571 if(mode_idx == sizeof(str_mode)/sizeof(str_mode[0]))
2572 return NULL;
2574 if((mode & OPENMODE__Nocreate) && !(f = _wfopen(name, rW)))
2575 return NULL;
2576 else if(f)
2577 fclose(f);
2579 if((mode & OPENMODE__Noreplace) && (mode & (OPENMODE_out|OPENMODE_app))
2580 && (f = _wfopen(name, rW))) {
2581 fclose(f);
2582 return NULL;
2585 /* msvcp60 - msvcp71 are ignoring prot argument */
2586 f = _wfsopen(name, (mode & OPENMODE_binary) ? str_mode[mode_idx].str_bin
2587 : str_mode[mode_idx].str, SH_DENYNO);
2588 if(!f)
2589 return NULL;
2591 if((mode & OPENMODE_ate) && fseek(f, 0, SEEK_END)) {
2592 fclose(f);
2593 return NULL;
2596 return f;
2599 /* ?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z */
2600 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEBDHH@Z */
2601 FILE* __cdecl _Fiopen(const char *name, int mode, int prot)
2603 wchar_t nameW[FILENAME_MAX];
2605 TRACE("(%s %d %d)\n", name, mode, prot);
2607 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
2608 return NULL;
2609 return _Fiopen_wchar(nameW, mode, prot);
2612 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WHH@Z */
2613 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
2614 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGHH@Z */
2615 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGHH@Z */
2616 static basic_filebuf_char* basic_filebuf_char_open_wchar(basic_filebuf_char *this, const wchar_t *name, int mode, int prot)
2618 FILE *f = NULL;
2620 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
2622 if(basic_filebuf_char_is_open(this))
2623 return NULL;
2625 if(!(f = _Fiopen_wchar(name, mode, prot)))
2626 return NULL;
2628 basic_filebuf_char__Init(this, f, INITFL_open);
2629 basic_filebuf_char__Initcvt(this, codecvt_char_use_facet(this->base.loc));
2630 return this;
2633 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDHH@Z */
2634 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDHH@Z */
2635 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open, 16)
2636 basic_filebuf_char* __thiscall basic_filebuf_char_open(basic_filebuf_char *this, const char *name, int mode, int prot)
2638 wchar_t nameW[FILENAME_MAX];
2640 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
2642 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
2643 return NULL;
2644 return basic_filebuf_char_open_wchar(this, nameW, mode, prot);
2647 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDI@Z */
2648 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDI@Z */
2649 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode, 12)
2650 basic_filebuf_char* __thiscall basic_filebuf_char_open_mode(basic_filebuf_char *this, const char *name, unsigned int mode)
2652 return basic_filebuf_char_open(this, name, mode, SH_DENYNO);
2655 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
2656 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
2657 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_overflow, 8)
2658 int __thiscall basic_filebuf_char_overflow(basic_filebuf_char *this, int c)
2660 char buf[8], *dyn_buf;
2661 char ch = c, *to_next;
2662 const char *from_next;
2663 int ret, max_size;
2666 TRACE("(%p %d)\n", this, c);
2668 if(!basic_filebuf_char_is_open(this))
2669 return EOF;
2670 if(c == EOF)
2671 return !c;
2673 if(!this->cvt)
2674 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
2676 from_next = &ch;
2677 do {
2678 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1,
2679 &from_next, buf, buf+sizeof(buf), &to_next);
2681 switch(ret) {
2682 case CODECVT_partial:
2683 if(to_next == buf)
2684 break;
2685 /* fall through */
2686 case CODECVT_ok:
2687 if(!fwrite(buf, to_next-buf, 1, this->file))
2688 return EOF;
2689 if(ret == CODECVT_partial)
2690 continue;
2691 return c;
2692 case CODECVT_noconv:
2693 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
2694 default:
2695 return EOF;
2698 break;
2699 } while(1);
2701 max_size = codecvt_base_max_length(&this->cvt->base);
2702 dyn_buf = malloc(max_size);
2703 if(!dyn_buf)
2704 return EOF;
2706 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1,
2707 &from_next, dyn_buf, dyn_buf+max_size, &to_next);
2709 switch(ret) {
2710 case CODECVT_ok:
2711 ret = fwrite(dyn_buf, to_next-dyn_buf, 1, this->file);
2712 free(dyn_buf);
2713 return ret ? c : EOF;
2714 case CODECVT_partial:
2715 ERR("buffer should be big enough to store all output\n");
2716 /* fall through */
2717 default:
2718 free(dyn_buf);
2719 return EOF;
2723 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
2724 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
2725 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_pbackfail, 8)
2726 int __thiscall basic_filebuf_char_pbackfail(basic_filebuf_char *this, int c)
2728 TRACE("(%p %d)\n", this, c);
2730 if(!basic_filebuf_char_is_open(this))
2731 return EOF;
2733 if(basic_streambuf_char_gptr(&this->base)>basic_streambuf_char_eback(&this->base)
2734 && (c==EOF || (int)(unsigned char)basic_streambuf_char_gptr(&this->base)[-1]==c)) {
2735 basic_streambuf_char__Gndec(&this->base);
2736 return c==EOF ? !c : c;
2737 }else if(c!=EOF && !this->cvt) {
2738 return ungetc(c, this->file);
2741 return EOF;
2744 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2745 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2746 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_uflow, 4)
2747 int __thiscall basic_filebuf_char_uflow(basic_filebuf_char *this)
2749 char ch, buf[128], *to_next;
2750 const char *buf_next;
2751 int c, i;
2753 TRACE("(%p)\n", this);
2755 if(!basic_filebuf_char_is_open(this))
2756 return EOF;
2758 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
2759 return (unsigned char)*basic_streambuf_char__Gninc(&this->base);
2761 c = fgetc(this->file);
2762 if(!this->cvt || c==EOF)
2763 return c;
2765 buf_next = buf;
2766 for(i=0; i < sizeof(buf)/sizeof(buf[0]); i++) {
2767 buf[i] = c;
2769 switch(codecvt_char_in(this->cvt, &this->state, buf_next,
2770 buf+i+1, &buf_next, &ch, &ch+1, &to_next)) {
2771 case CODECVT_partial:
2772 case CODECVT_ok:
2773 if(to_next == &ch) {
2774 c = fgetc(this->file);
2775 if(c == EOF)
2776 return EOF;
2777 continue;
2780 for(i--; i>=buf_next-buf; i--)
2781 ungetc(buf[i], this->file);
2782 return ch;
2783 case CODECVT_noconv:
2784 return (unsigned char)buf[0];
2785 default:
2786 return EOF;
2790 FIXME("buffer is too small\n");
2791 return EOF;
2794 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2795 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2796 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_underflow, 4)
2797 int __thiscall basic_filebuf_char_underflow(basic_filebuf_char *this)
2799 int ret;
2801 TRACE("(%p)\n", this);
2803 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
2804 return (unsigned char)*basic_streambuf_char_gptr(&this->base);
2806 ret = call_basic_streambuf_char_uflow(&this->base);
2807 if(ret != EOF)
2808 ret = call_basic_streambuf_char_pbackfail(&this->base, ret);
2809 return ret;
2812 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2813 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2814 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekoff, 20)
2815 fpos_int* __thiscall basic_filebuf_char_seekoff(basic_filebuf_char *this,
2816 fpos_int *ret, streamoff off, int way, int mode)
2818 fpos_t pos;
2820 TRACE("(%p %p %ld %d %d)\n", this, ret, off, way, mode);
2822 if(!basic_filebuf_char_is_open(this) || !basic_filebuf_char__Endwrite(this)
2823 || fseek(this->file, off, way)) {
2824 ret->off = -1;
2825 ret->pos = 0;
2826 ret->state = 0;
2827 return ret;
2830 fgetpos(this->file, &pos);
2831 ret->off = 0;
2832 ret->pos = pos;
2833 ret->state = this->state;
2834 return ret;
2837 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2838 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2839 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekpos, 36)
2840 fpos_int* __thiscall basic_filebuf_char_seekpos(basic_filebuf_char *this,
2841 fpos_int *ret, fpos_int pos, int mode)
2843 fpos_t fpos;
2845 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
2847 if(!basic_filebuf_char_is_open(this) || !basic_filebuf_char__Endwrite(this)
2848 || fseek(this->file, (LONG)pos.pos, SEEK_SET)
2849 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
2850 ret->off = -1;
2851 ret->pos = 0;
2852 ret->state = 0;
2853 return ret;
2856 fgetpos(this->file, &fpos);
2857 ret->off = 0;
2858 ret->pos = fpos;
2859 ret->state = this->state;
2860 return ret;
2863 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PADH@Z */
2864 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAD_J@Z */
2865 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_setbuf, 12)
2866 basic_streambuf_char* __thiscall basic_filebuf_char_setbuf(basic_filebuf_char *this, char *buf, streamsize count)
2868 TRACE("(%p %p %ld)\n", this, buf, count);
2870 if(!basic_filebuf_char_is_open(this))
2871 return NULL;
2873 if(setvbuf(this->file, buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count))
2874 return NULL;
2876 basic_filebuf_char__Init(this, this->file, INITFL_open);
2877 return &this->base;
2880 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2881 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2882 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_sync, 4)
2883 int __thiscall basic_filebuf_char_sync(basic_filebuf_char *this)
2885 TRACE("(%p)\n", this);
2887 if(!basic_filebuf_char_is_open(this))
2888 return 0;
2890 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
2891 return 0;
2892 return fflush(this->file);
2895 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
2896 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
2897 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_imbue, 8)
2898 void __thiscall basic_filebuf_char_imbue(basic_filebuf_char *this, const locale *loc)
2900 TRACE("(%p %p)\n", this, loc);
2901 basic_filebuf_char__Initcvt(this, codecvt_char_use_facet(loc));
2904 /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
2905 /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
2906 int basic_filebuf_wchar__Init__Stinit = 0;
2908 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
2909 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
2910 int basic_filebuf_short__Init__Stinit = 0;
2912 /* ?_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
2913 /* ?_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
2914 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Init, 12)
2915 void __thiscall basic_filebuf_wchar__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
2917 TRACE("(%p %p %d)\n", this, file, which);
2919 this->cvt = NULL;
2920 this->wrotesome = FALSE;
2921 this->state = basic_filebuf_wchar__Init__Stinit;
2922 this->close = (which == INITFL_open);
2923 this->file = file;
2925 basic_streambuf_wchar__Init_empty(&this->base);
2928 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
2929 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
2930 DEFINE_THISCALL_WRAPPER(basic_filebuf_short__Init, 12)
2931 void __thiscall basic_filebuf_short__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
2933 TRACE("(%p %p %d)\n", this, file, which);
2935 this->cvt = NULL;
2936 this->wrotesome = FALSE;
2937 this->state = basic_filebuf_short__Init__Stinit;
2938 this->close = (which == INITFL_open);
2939 this->file = file;
2941 basic_streambuf_wchar__Init_empty(&this->base);
2944 /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$codecvt@_WDH@2@@Z */
2945 /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$codecvt@_WDH@2@@Z */
2946 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAV?$codecvt@GDH@2@@Z */
2947 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$codecvt@GDH@2@@Z */
2948 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt, 8)
2949 void __thiscall basic_filebuf_wchar__Initcvt(basic_filebuf_wchar *this, codecvt_wchar *cvt)
2951 TRACE("(%p %p)\n", this, cvt);
2953 if(codecvt_base_always_noconv(&cvt->base)) {
2954 this->cvt = NULL;
2955 }else {
2956 basic_streambuf_wchar__Init_empty(&this->base);
2957 this->cvt = cvt;
2961 /* ?_Endwrite@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAE_NXZ */
2962 /* ?_Endwrite@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAA_NXZ */
2963 /* ?_Endwrite@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAE_NXZ */
2964 /* ?_Endwrite@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAA_NXZ */
2965 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Endwrite, 4)
2966 MSVCP_bool __thiscall basic_filebuf_wchar__Endwrite(basic_filebuf_wchar *this)
2968 TRACE("(%p)\n", this);
2970 if(!this->wrotesome || !this->cvt)
2971 return TRUE;
2973 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
2974 return FALSE;
2976 while(1) {
2977 /* TODO: check if we need a dynamic buffer here */
2978 char buf[128];
2979 char *next;
2980 int ret;
2982 ret = codecvt_wchar_unshift(this->cvt, &this->state, buf, buf+sizeof(buf), &next);
2983 switch(ret) {
2984 case CODECVT_ok:
2985 this->wrotesome = FALSE;
2986 /* fall through */
2987 case CODECVT_partial:
2988 if(!fwrite(buf, next-buf, 1, this->file))
2989 return FALSE;
2990 if(this->wrotesome)
2991 break;
2992 /* fall through */
2993 case CODECVT_noconv:
2994 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
2995 return FALSE;
2996 return TRUE;
2997 default:
2998 return FALSE;
3003 /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@XZ */
3004 /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@XZ */
3005 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@XZ */
3006 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@XZ */
3007 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_close, 4)
3008 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_close(basic_filebuf_wchar *this)
3010 basic_filebuf_wchar *ret = this;
3012 TRACE("(%p)\n", this);
3014 if(!this->file)
3015 return NULL;
3017 /* TODO: handle exceptions */
3018 if(!basic_filebuf_wchar__Endwrite(this))
3019 ret = NULL;
3020 if(fclose(this->file))
3021 ret = NULL;
3023 basic_filebuf_wchar__Init(this, NULL, INITFL_close);
3024 return ret;
3027 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
3028 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
3029 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_file, 8)
3030 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_file(basic_filebuf_wchar *this, FILE *file)
3032 TRACE("(%p %p)\n", this, file);
3034 basic_streambuf_wchar_ctor(&this->base);
3035 this->base.vtable = &MSVCP_basic_filebuf_wchar_vtable;
3037 basic_filebuf_wchar__Init(this, file, INITFL_new);
3038 return this;
3041 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
3042 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
3043 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_file, 8)
3044 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_file(basic_filebuf_wchar *this, FILE *file)
3046 TRACE("(%p %p)\n", this, file);
3048 basic_streambuf_short_ctor(&this->base);
3049 this->base.vtable = &MSVCP_basic_filebuf_short_vtable;
3051 basic_filebuf_short__Init(this, file, INITFL_new);
3052 return this;
3055 /* ??_F?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
3056 /* ??_F?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
3057 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor, 4)
3058 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor(basic_filebuf_wchar *this)
3060 return basic_filebuf_wchar_ctor_file(this, NULL);
3063 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
3064 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
3065 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor, 4)
3066 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor(basic_filebuf_wchar *this)
3068 return basic_filebuf_short_ctor_file(this, NULL);
3071 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */
3072 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
3073 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_uninitialized, 8)
3074 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
3076 TRACE("(%p %d)\n", this, uninitialized);
3078 basic_streambuf_wchar_ctor(&this->base);
3079 this->base.vtable = &MSVCP_basic_filebuf_wchar_vtable;
3080 return this;
3083 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
3084 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
3085 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_uninitialized, 8)
3086 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
3088 TRACE("(%p %d)\n", this, uninitialized);
3090 basic_streambuf_short_ctor(&this->base);
3091 this->base.vtable = &MSVCP_basic_filebuf_short_vtable;
3092 return this;
3095 /* ??1?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
3096 /* ??1?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
3097 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
3098 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
3099 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_dtor, 4)
3100 void __thiscall basic_filebuf_wchar_dtor(basic_filebuf_wchar *this)
3102 TRACE("(%p)\n", this);
3104 if(this->close)
3105 basic_filebuf_wchar_close(this);
3106 basic_streambuf_wchar_dtor(&this->base);
3109 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_vector_dtor, 8)
3110 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_vector_dtor(basic_filebuf_wchar *this, unsigned int flags)
3112 TRACE("(%p %x)\n", this, flags);
3113 if(flags & 2) {
3114 /* we have an array, with the number of elements stored before the first object */
3115 INT_PTR i, *ptr = (INT_PTR *)this-1;
3117 for(i=*ptr-1; i>=0; i--)
3118 basic_filebuf_wchar_dtor(this+i);
3119 MSVCRT_operator_delete(ptr);
3120 } else {
3121 basic_filebuf_wchar_dtor(this);
3122 if(flags & 1)
3123 MSVCRT_operator_delete(this);
3126 return this;
3129 /* ?is_open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
3130 /* ?is_open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
3131 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QBE_NXZ */
3132 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
3133 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_is_open, 4)
3134 MSVCP_bool __thiscall basic_filebuf_wchar_is_open(const basic_filebuf_wchar *this)
3136 TRACE("(%p)\n", this);
3137 return this->file != NULL;
3140 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PB_WHH@Z */
3141 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3142 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBGHH@Z */
3143 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3144 static basic_filebuf_wchar* basic_filebuf_wchar_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot)
3146 FILE *f = NULL;
3148 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3150 if(basic_filebuf_wchar_is_open(this))
3151 return NULL;
3153 if(!(f = _Fiopen_wchar(name, mode, prot)))
3154 return NULL;
3156 basic_filebuf_wchar__Init(this, f, INITFL_open);
3157 basic_filebuf_wchar__Initcvt(this, codecvt_wchar_use_facet(this->base.loc));
3158 return this;
3161 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WHH@Z */
3162 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3163 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGHH@Z */
3164 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3165 static basic_filebuf_wchar* basic_filebuf_short_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot)
3167 FILE *f = NULL;
3169 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3171 if(basic_filebuf_wchar_is_open(this))
3172 return NULL;
3174 if(!(f = _Fiopen_wchar(name, mode, prot)))
3175 return NULL;
3177 basic_filebuf_short__Init(this, f, INITFL_open);
3178 basic_filebuf_wchar__Initcvt(this, codecvt_short_use_facet(this->base.loc));
3179 return this;
3182 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDHH@Z */
3183 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3184 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open, 16)
3185 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open(basic_filebuf_wchar *this, const char *name, int mode, int prot)
3187 wchar_t nameW[FILENAME_MAX];
3189 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3191 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3192 return NULL;
3193 return basic_filebuf_wchar_open_wchar(this, nameW, mode, prot);
3196 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDHH@Z */
3197 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3198 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open, 16)
3199 basic_filebuf_wchar* __thiscall basic_filebuf_short_open(basic_filebuf_wchar *this, const char *name, int mode, int prot)
3201 wchar_t nameW[FILENAME_MAX];
3203 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3205 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3206 return NULL;
3207 return basic_filebuf_short_open_wchar(this, nameW, mode, prot);
3210 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDI@Z */
3211 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDI@Z */
3212 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_mode, 12)
3213 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
3215 return basic_filebuf_wchar_open(this, name, mode, SH_DENYNO);
3218 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDI@Z */
3219 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDI@Z */
3220 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_mode, 12)
3221 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
3223 return basic_filebuf_short_open(this, name, mode, SH_DENYNO);
3226 /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
3227 /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
3228 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
3229 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
3230 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_overflow, 8)
3231 unsigned short __thiscall basic_filebuf_wchar_overflow(basic_filebuf_wchar *this, unsigned short c)
3233 char buf[8], *dyn_buf, *to_next;
3234 wchar_t ch = c;
3235 const wchar_t *from_next;
3236 int max_size;
3237 unsigned short ret;
3240 TRACE("(%p %d)\n", this, c);
3242 if(!basic_filebuf_wchar_is_open(this))
3243 return WEOF;
3244 if(c == WEOF)
3245 return !c;
3247 if(!this->cvt)
3248 return fwrite(&ch, sizeof(wchar_t), 1, this->file) ? c : WEOF;
3250 from_next = &ch;
3251 do {
3252 ret = codecvt_wchar_out(this->cvt, &this->state, from_next, &ch+1,
3253 &from_next, buf, buf+sizeof(buf), &to_next);
3255 switch(ret) {
3256 case CODECVT_partial:
3257 if(to_next == buf)
3258 break;
3259 /* fall through */
3260 case CODECVT_ok:
3261 if(!fwrite(buf, to_next-buf, 1, this->file))
3262 return WEOF;
3263 if(ret == CODECVT_partial)
3264 continue;
3265 return c;
3266 case CODECVT_noconv:
3267 return fwrite(&ch, sizeof(wchar_t), 1, this->file) ? c : WEOF;
3268 default:
3269 return WEOF;
3272 break;
3273 } while(1);
3275 max_size = codecvt_base_max_length(&this->cvt->base);
3276 dyn_buf = malloc(max_size);
3277 if(!dyn_buf)
3278 return WEOF;
3280 ret = codecvt_wchar_out(this->cvt, &this->state, from_next, &ch+1,
3281 &from_next, dyn_buf, dyn_buf+max_size, &to_next);
3283 switch(ret) {
3284 case CODECVT_ok:
3285 ret = fwrite(dyn_buf, to_next-dyn_buf, 1, this->file);
3286 free(dyn_buf);
3287 return ret ? c : WEOF;
3288 case CODECVT_partial:
3289 ERR("buffer should be big enough to store all output\n");
3290 /* fall through */
3291 default:
3292 free(dyn_buf);
3293 return WEOF;
3297 /* ?pbackfail@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
3298 /* ?pbackfail@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
3299 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
3300 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
3301 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_pbackfail, 8)
3302 unsigned short __thiscall basic_filebuf_wchar_pbackfail(basic_filebuf_wchar *this, unsigned short c)
3304 TRACE("(%p %d)\n", this, c);
3306 if(!basic_filebuf_wchar_is_open(this))
3307 return WEOF;
3309 if(basic_streambuf_wchar_gptr(&this->base)>basic_streambuf_wchar_eback(&this->base)
3310 && (c==WEOF || basic_streambuf_wchar_gptr(&this->base)[-1]==c)) {
3311 basic_streambuf_wchar__Gndec(&this->base);
3312 return c==WEOF ? !c : c;
3313 }else if(c!=WEOF && !this->cvt) {
3314 return ungetwc(c, this->file);
3315 }else if(c!=WEOF && basic_streambuf_wchar_gptr(&this->base)!=&this->putback) {
3316 this->putback = c;
3317 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback, &this->putback+1);
3318 return c;
3321 return WEOF;
3324 /* ?uflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
3325 /* ?uflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
3326 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
3327 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
3328 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_uflow, 4)
3329 unsigned short __thiscall basic_filebuf_wchar_uflow(basic_filebuf_wchar *this)
3331 wchar_t ch, *to_next;
3332 char buf[128];
3333 const char *buf_next;
3334 int c, i;
3336 TRACE("(%p)\n", this);
3338 if(!basic_filebuf_wchar_is_open(this))
3339 return WEOF;
3341 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
3342 return *basic_streambuf_wchar__Gninc(&this->base);
3344 if(!this->cvt)
3345 return fgetwc(this->file);
3347 buf_next = buf;
3348 for(i=0; i < sizeof(buf)/sizeof(buf[0]); i++) {
3349 if((c = fgetc(this->file)) == EOF)
3350 return WEOF;
3351 buf[i] = c;
3353 switch(codecvt_wchar_in(this->cvt, &this->state, buf_next,
3354 buf+i+1, &buf_next, &ch, &ch+1, &to_next)) {
3355 case CODECVT_partial:
3356 case CODECVT_ok:
3357 if(to_next == &ch)
3358 continue;
3360 for(i--; i>=buf_next-buf; i--)
3361 ungetc(buf[i], this->file);
3362 return ch;
3363 case CODECVT_noconv:
3364 if(i+1 < sizeof(wchar_t))
3365 continue;
3367 memcpy(&ch, buf, sizeof(wchar_t));
3368 return ch;
3369 default:
3370 return WEOF;
3374 FIXME("buffer is too small\n");
3375 return WEOF;
3378 /* ?underflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
3379 /* ?underflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
3380 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
3381 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
3382 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_underflow, 4)
3383 unsigned short __thiscall basic_filebuf_wchar_underflow(basic_filebuf_wchar *this)
3385 unsigned short ret;
3387 TRACE("(%p)\n", this);
3389 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
3390 return *basic_streambuf_wchar_gptr(&this->base);
3392 ret = call_basic_streambuf_wchar_uflow(&this->base);
3393 if(ret != WEOF)
3394 ret = call_basic_streambuf_wchar_pbackfail(&this->base, ret);
3395 return ret;
3398 /* ?seekoff@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3399 /* ?seekoff@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3400 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3401 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3402 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekoff, 20)
3403 fpos_int* __thiscall basic_filebuf_wchar_seekoff(basic_filebuf_wchar *this,
3404 fpos_int *ret, streamoff off, int way, int mode)
3406 fpos_t pos;
3408 TRACE("(%p %p %ld %d %d)\n", this, ret, off, way, mode);
3410 if(basic_streambuf_wchar_gptr(&this->base) == &this->putback) {
3411 if(way == SEEKDIR_cur)
3412 off -= sizeof(wchar_t);
3414 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback+1, &this->putback+1);
3417 if(!basic_filebuf_wchar_is_open(this) || !basic_filebuf_wchar__Endwrite(this)
3418 || fseek(this->file, off, way)) {
3419 ret->off = -1;
3420 ret->pos = 0;
3421 ret->state = 0;
3422 return ret;
3425 fgetpos(this->file, &pos);
3426 ret->off = 0;
3427 ret->pos = pos;
3428 ret->state = this->state;
3429 return ret;
3432 /* ?seekpos@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3433 /* ?seekpos@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3434 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3435 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3436 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekpos, 36)
3437 fpos_int* __thiscall basic_filebuf_wchar_seekpos(basic_filebuf_wchar *this,
3438 fpos_int *ret, fpos_int pos, int mode)
3440 fpos_t fpos;
3442 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
3444 if(!basic_filebuf_wchar_is_open(this) || !basic_filebuf_wchar__Endwrite(this)
3445 || fseek(this->file, (LONG)pos.pos, SEEK_SET)
3446 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
3447 ret->off = -1;
3448 ret->pos = 0;
3449 ret->state = 0;
3450 return ret;
3453 if(basic_streambuf_wchar_gptr(&this->base) == &this->putback)
3454 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback+1, &this->putback+1);
3456 fgetpos(this->file, &fpos);
3457 ret->off = 0;
3458 ret->pos = fpos;
3459 ret->state = this->state;
3460 return ret;
3463 /* ?setbuf@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PA_WH@Z */
3464 /* ?setbuf@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEA_W_J@Z */
3465 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_setbuf, 12)
3466 basic_streambuf_wchar* __thiscall basic_filebuf_wchar_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
3468 TRACE("(%p %p %ld)\n", this, buf, count);
3470 if(!basic_filebuf_wchar_is_open(this))
3471 return NULL;
3473 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
3474 return NULL;
3476 basic_filebuf_wchar__Init(this, this->file, INITFL_open);
3477 return &this->base;
3480 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAGH@Z */
3481 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAG_J@Z */
3482 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_setbuf, 12)
3483 basic_streambuf_wchar* __thiscall basic_filebuf_short_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
3485 TRACE("(%p %p %ld)\n", this, buf, count);
3487 if(!basic_filebuf_wchar_is_open(this))
3488 return NULL;
3490 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
3491 return NULL;
3493 basic_filebuf_short__Init(this, this->file, INITFL_open);
3494 return &this->base;
3497 /* ?sync@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
3498 /* ?sync@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
3499 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
3500 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
3501 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_sync, 4)
3502 int __thiscall basic_filebuf_wchar_sync(basic_filebuf_wchar *this)
3504 TRACE("(%p)\n", this);
3506 if(!basic_filebuf_wchar_is_open(this))
3507 return 0;
3509 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
3510 return 0;
3511 return fflush(this->file);
3514 /* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
3515 /* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
3516 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_imbue, 8)
3517 void __thiscall basic_filebuf_wchar_imbue(basic_filebuf_wchar *this, const locale *loc)
3519 TRACE("(%p %p)\n", this, loc);
3520 basic_filebuf_wchar__Initcvt(this, codecvt_wchar_use_facet(loc));
3523 /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
3524 /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
3525 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_imbue, 8)
3526 void __thiscall basic_filebuf_short_imbue(basic_filebuf_wchar *this, const locale *loc)
3528 TRACE("(%p %p)\n", this, loc);
3529 basic_filebuf_wchar__Initcvt(this, codecvt_short_use_facet(loc));
3532 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */
3533 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAHH@Z */
3534 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Getstate, 8)
3535 int __thiscall basic_stringbuf_char__Getstate(basic_stringbuf_char *this, IOSB_openmode mode)
3537 int state = 0;
3539 if(!(mode & OPENMODE_in))
3540 state |= STRINGBUF_no_read;
3542 if(!(mode & OPENMODE_out))
3543 state |= STRINGBUF_no_write;
3545 if(mode & OPENMODE_ate)
3546 state |= STRINGBUF_at_end;
3548 if(mode & OPENMODE_app)
3549 state |= STRINGBUF_append;
3551 return state;
3554 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXPBDIH@Z */
3555 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXPEBD_KH@Z */
3556 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Init, 16)
3557 void __thiscall basic_stringbuf_char__Init(basic_stringbuf_char *this, const char *str, MSVCP_size_t count, int state)
3559 TRACE("(%p, %p, %ld, %d)\n", this, str, count, state);
3561 basic_streambuf_char__Init_empty(&this->base);
3563 this->state = state;
3564 this->seekhigh = NULL;
3566 if(count && str) {
3567 char *buf = MSVCRT_operator_new(count);
3568 if(!buf) {
3569 ERR("Out of memory\n");
3570 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
3573 memcpy(buf, str, count);
3574 this->seekhigh = buf + count;
3576 this->state |= STRINGBUF_allocated;
3578 if(!(state & STRINGBUF_no_read))
3579 basic_streambuf_char_setg(&this->base, buf, buf, buf + count);
3581 if(!(state & STRINGBUF_no_write)) {
3582 basic_streambuf_char_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
3584 if(!basic_streambuf_char_gptr(&this->base))
3585 basic_streambuf_char_setg(&this->base, buf, 0, buf);
3590 /* ??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 */
3591 /* ??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 */
3592 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_str, 12)
3593 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_str(basic_stringbuf_char *this,
3594 const basic_string_char *str, IOSB_openmode mode)
3596 TRACE("(%p %p %d)\n", this, str, mode);
3598 basic_streambuf_char_ctor(&this->base);
3599 this->base.vtable = &MSVCP_basic_stringbuf_char_vtable;
3601 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str),
3602 str->size, basic_stringbuf_char__Getstate(this, mode));
3603 return this;
3606 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
3607 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
3608 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_mode, 8)
3609 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_mode(
3610 basic_stringbuf_char *this, IOSB_openmode mode)
3612 TRACE("(%p %d)\n", this, mode);
3614 basic_streambuf_char_ctor(&this->base);
3615 this->base.vtable = &MSVCP_basic_stringbuf_char_vtable;
3617 basic_stringbuf_char__Init(this, NULL, 0, basic_stringbuf_char__Getstate(this, mode));
3618 return this;
3621 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
3622 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
3623 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor, 4)
3624 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor(basic_stringbuf_char *this)
3626 return basic_stringbuf_char_ctor_mode(this, OPENMODE_in|OPENMODE_out);
3629 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXXZ */
3630 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXXZ */
3631 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Tidy, 4)
3632 void __thiscall basic_stringbuf_char__Tidy(basic_stringbuf_char *this)
3634 TRACE("(%p)\n", this);
3636 if(this->state & STRINGBUF_allocated) {
3637 MSVCRT_operator_delete(basic_streambuf_char_eback(&this->base));
3638 this->seekhigh = NULL;
3639 this->state &= ~STRINGBUF_allocated;
3642 basic_streambuf_char__Init_empty(&this->base);
3645 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
3646 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
3647 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_dtor, 4)
3648 void __thiscall basic_stringbuf_char_dtor(basic_stringbuf_char *this)
3650 TRACE("(%p)\n", this);
3652 basic_stringbuf_char__Tidy(this);
3653 basic_streambuf_char_dtor(&this->base);
3656 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_vector_dtor, 8)
3657 basic_stringbuf_char* __thiscall basic_stringbuf_char_vector_dtor(basic_stringbuf_char *this, unsigned int flags)
3659 TRACE("(%p %x)\n", this, flags);
3661 if(flags & 2) {
3662 /* we have an array, with the number of elements stored before the first object */
3663 INT_PTR i, *ptr = (INT_PTR *) this - 1;
3665 for (i = *ptr - 1; i >= 0; i--)
3666 basic_stringbuf_char_dtor(this+i);
3668 MSVCRT_operator_delete(ptr);
3669 }else {
3670 basic_stringbuf_char_dtor(this);
3672 if(flags & 1)
3673 MSVCRT_operator_delete(this);
3676 return this;
3679 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
3680 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
3681 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_overflow, 8)
3682 int __thiscall basic_stringbuf_char_overflow(basic_stringbuf_char *this, int meta)
3684 MSVCP_size_t oldsize, size;
3685 char *ptr, *buf;
3687 TRACE("(%p %x)\n", this, meta);
3689 if(meta == EOF)
3690 return !EOF;
3691 if(this->state & STRINGBUF_no_write)
3692 return EOF;
3694 ptr = basic_streambuf_char_pptr(&this->base);
3695 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
3696 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
3697 this->seekhigh, basic_streambuf_char_epptr(&this->base));
3699 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
3700 return (*basic_streambuf_char__Pninc(&this->base) = meta);
3702 oldsize = (ptr ? basic_streambuf_char_epptr(&this->base)-basic_streambuf_char_eback(&this->base): 0);
3703 size = oldsize|0xf;
3704 size += size/2;
3705 buf = MSVCRT_operator_new(size);
3706 if(!buf) {
3707 ERR("Out of memory\n");
3708 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
3711 if(!oldsize) {
3712 this->seekhigh = buf;
3713 basic_streambuf_char_setp(&this->base, buf, buf+size);
3714 if(this->state & STRINGBUF_no_read)
3715 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
3716 else
3717 basic_streambuf_char_setg(&this->base, buf, buf, buf+1);
3719 this->state |= STRINGBUF_allocated;
3720 }else {
3721 ptr = basic_streambuf_char_eback(&this->base);
3722 memcpy(buf, ptr, oldsize);
3724 this->seekhigh = buf+(this->seekhigh-ptr);
3725 basic_streambuf_char_setp_next(&this->base, buf,
3726 buf+(basic_streambuf_char_pptr(&this->base)-ptr), buf+size);
3727 if(this->state & STRINGBUF_no_read)
3728 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
3729 else
3730 basic_streambuf_char_setg(&this->base, buf,
3731 buf+(basic_streambuf_char_gptr(&this->base)-ptr),
3732 basic_streambuf_char_pptr(&this->base)+1);
3734 MSVCRT_operator_delete(ptr);
3737 return (*basic_streambuf_char__Pninc(&this->base) = meta);
3740 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
3741 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
3742 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_pbackfail, 8)
3743 int __thiscall basic_stringbuf_char_pbackfail(basic_stringbuf_char *this, int c)
3745 char *cur;
3747 TRACE("(%p %x)\n", this, c);
3749 cur = basic_streambuf_char_gptr(&this->base);
3750 if(!cur || cur==basic_streambuf_char_eback(&this->base)
3751 || (c!=EOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
3752 return EOF;
3754 if(c != EOF)
3755 cur[-1] = c;
3756 basic_streambuf_char_gbump(&this->base, -1);
3757 return c==EOF ? !EOF : c;
3760 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHXZ */
3761 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHXZ */
3762 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_underflow, 4)
3763 int __thiscall basic_stringbuf_char_underflow(basic_stringbuf_char *this)
3765 char *ptr, *cur;
3767 TRACE("(%p)\n", this);
3769 cur = basic_streambuf_char_gptr(&this->base);
3770 if(!cur || this->state&STRINGBUF_no_read)
3771 return EOF;
3773 ptr = basic_streambuf_char_pptr(&this->base);
3774 if(this->seekhigh < ptr)
3775 this->seekhigh = ptr;
3777 ptr = basic_streambuf_char_egptr(&this->base);
3778 if(this->seekhigh > ptr)
3779 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base), cur, this->seekhigh);
3781 if(cur < this->seekhigh)
3782 return (unsigned char)*cur;
3783 return EOF;
3786 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3787 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3788 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekoff, 20)
3789 fpos_int* __thiscall basic_stringbuf_char_seekoff(basic_stringbuf_char *this,
3790 fpos_int *ret, streamoff off, int way, int mode)
3792 char *beg, *cur_r, *cur_w;
3794 TRACE("(%p %p %ld %d %d)\n", this, ret, off, way, mode);
3796 cur_w = basic_streambuf_char_pptr(&this->base);
3797 if(cur_w > this->seekhigh)
3798 this->seekhigh = cur_w;
3800 ret->off = 0;
3801 ret->pos = 0;
3802 ret->state = 0;
3804 beg = basic_streambuf_char_eback(&this->base);
3805 cur_r = basic_streambuf_char_gptr(&this->base);
3806 if((mode & OPENMODE_in) && cur_r) {
3807 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
3808 off += cur_r-beg;
3809 else if(way == SEEKDIR_end)
3810 off += this->seekhigh-beg;
3811 else if(way != SEEKDIR_beg)
3812 off = -1;
3814 if(off<0 || off>this->seekhigh-beg) {
3815 off = -1;
3816 }else {
3817 basic_streambuf_char_gbump(&this->base, beg-cur_r+off);
3818 if((mode & OPENMODE_out) && cur_w) {
3819 basic_streambuf_char_setp_next(&this->base, beg,
3820 basic_streambuf_char_gptr(&this->base),
3821 basic_streambuf_char_epptr(&this->base));
3824 }else if((mode & OPENMODE_out) && cur_w) {
3825 if(way == SEEKDIR_cur)
3826 off += cur_w-beg;
3827 else if(way == SEEKDIR_end)
3828 off += this->seekhigh-beg;
3829 else if(way != SEEKDIR_beg)
3830 off = -1;
3832 if(off<0 || off>this->seekhigh-beg)
3833 off = -1;
3834 else
3835 basic_streambuf_char_pbump(&this->base, beg-cur_w+off);
3836 }else {
3837 off = -1;
3840 ret->off = off;
3841 return ret;
3844 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3845 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3846 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekpos, 36)
3847 fpos_int* __thiscall basic_stringbuf_char_seekpos(basic_stringbuf_char *this,
3848 fpos_int *ret, fpos_int pos, int mode)
3850 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
3852 if(pos.off==-1 && pos.pos==0 && pos.state==0) {
3853 *ret = pos;
3854 return ret;
3857 return basic_stringbuf_char_seekoff(this, ret, pos.off, SEEKDIR_beg, mode);
3860 /* ?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 */
3861 /* ?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 */
3862 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_set, 8)
3863 void __thiscall basic_stringbuf_char_str_set(basic_stringbuf_char *this, const basic_string_char *str)
3865 TRACE("(%p %p)\n", this, str);
3867 basic_stringbuf_char__Tidy(this);
3868 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str), str->size, this->state);
3871 /* ?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 */
3872 /* ?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 */
3873 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_get, 8)
3874 basic_string_char* __thiscall basic_stringbuf_char_str_get(const basic_stringbuf_char *this, basic_string_char *ret)
3876 char *ptr;
3878 TRACE("(%p)\n", this);
3880 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_char_pptr(&this->base)) {
3881 char *pptr;
3883 ptr = basic_streambuf_char_pbase(&this->base);
3884 pptr = basic_streambuf_char_pptr(&this->base);
3886 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
3889 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_char_gptr(&this->base)) {
3890 ptr = basic_streambuf_char_eback(&this->base);
3891 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, basic_streambuf_char_egptr(&this->base) - ptr);
3894 return MSVCP_basic_string_char_ctor(ret);
3897 /* ?_Getstate@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AAEHH@Z */
3898 /* ?_Getstate@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AEAAHH@Z */
3899 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEHH@Z */
3900 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAHH@Z */
3901 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Getstate, 8)
3902 int __thiscall basic_stringbuf_wchar__Getstate(basic_stringbuf_wchar *this, IOSB_openmode mode)
3904 int state = 0;
3906 if(!(mode & OPENMODE_in))
3907 state |= STRINGBUF_no_read;
3909 if(!(mode & OPENMODE_out))
3910 state |= STRINGBUF_no_write;
3912 if(mode & OPENMODE_ate)
3913 state |= STRINGBUF_at_end;
3915 if(mode & OPENMODE_app)
3916 state |= STRINGBUF_append;
3918 return state;
3921 /* ?_Init@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXPB_WIH@Z */
3922 /* ?_Init@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAXPEB_W_KH@Z */
3923 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXPBGIH@Z */
3924 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXPEBG_KH@Z */
3925 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Init, 16)
3926 void __thiscall basic_stringbuf_wchar__Init(basic_stringbuf_wchar *this, const wchar_t *str, MSVCP_size_t count, int state)
3928 TRACE("(%p, %p, %lu, %d)\n", this, str, count, state);
3930 basic_streambuf_wchar__Init_empty(&this->base);
3932 this->state = state;
3933 this->seekhigh = NULL;
3935 if(count && str) {
3936 wchar_t *buf = MSVCRT_operator_new(count*sizeof(wchar_t));
3937 if(!buf) {
3938 ERR("Out of memory\n");
3939 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
3942 memcpy(buf, str, count*sizeof(wchar_t));
3943 this->seekhigh = buf + count;
3945 this->state |= STRINGBUF_allocated;
3947 if(!(state & STRINGBUF_no_read))
3948 basic_streambuf_wchar_setg(&this->base, buf, buf, buf + count);
3950 if(!(state & STRINGBUF_no_write)) {
3951 basic_streambuf_wchar_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
3953 if(!basic_streambuf_wchar_gptr(&this->base))
3954 basic_streambuf_wchar_setg(&this->base, buf, 0, buf);
3959 /* ??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 */
3960 /* ??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 */
3961 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor_str, 12)
3962 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor_str(basic_stringbuf_wchar *this,
3963 const basic_string_wchar *str, IOSB_openmode mode)
3965 TRACE("(%p %p %d)\n", this, str, mode);
3967 basic_streambuf_wchar_ctor(&this->base);
3968 this->base.vtable = &MSVCP_basic_stringbuf_wchar_vtable;
3970 basic_stringbuf_wchar__Init(this, MSVCP_basic_string_wchar_c_str(str),
3971 str->size, basic_stringbuf_wchar__Getstate(this, mode));
3972 return this;
3975 /* ??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 */
3976 /* ??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 */
3977 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_str, 12)
3978 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_str(basic_stringbuf_wchar *this,
3979 const basic_string_wchar *str, IOSB_openmode mode)
3981 basic_stringbuf_wchar_ctor_str(this, str, mode);
3982 this->base.vtable = &MSVCP_basic_stringbuf_short_vtable;
3983 return this;
3986 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
3987 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
3988 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor_mode, 8)
3989 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor_mode(
3990 basic_stringbuf_wchar *this, IOSB_openmode mode)
3992 TRACE("(%p %d)\n", this, mode);
3994 basic_streambuf_wchar_ctor(&this->base);
3995 this->base.vtable = &MSVCP_basic_stringbuf_wchar_vtable;
3997 basic_stringbuf_wchar__Init(this, NULL, 0, basic_stringbuf_wchar__Getstate(this, mode));
3998 return this;
4001 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
4002 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
4003 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_mode, 8)
4004 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_mode(
4005 basic_stringbuf_wchar *this, IOSB_openmode mode)
4007 basic_stringbuf_wchar_ctor_mode(this, mode);
4008 this->base.vtable = &MSVCP_basic_stringbuf_short_vtable;
4009 return this;
4012 /* ??_F?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
4013 /* ??_F?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
4014 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor, 4)
4015 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor(basic_stringbuf_wchar *this)
4017 return basic_stringbuf_wchar_ctor_mode(this, OPENMODE_in|OPENMODE_out);
4020 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
4021 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
4022 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor, 4)
4023 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor(basic_stringbuf_wchar *this)
4025 return basic_stringbuf_short_ctor_mode(this, OPENMODE_in|OPENMODE_out);
4028 /* ?_Tidy@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXXZ */
4029 /* ?_Tidy@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAXXZ */
4030 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXXZ */
4031 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXXZ */
4032 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Tidy, 4)
4033 void __thiscall basic_stringbuf_wchar__Tidy(basic_stringbuf_wchar *this)
4035 TRACE("(%p)\n", this);
4037 if(this->state & STRINGBUF_allocated) {
4038 MSVCRT_operator_delete(basic_streambuf_wchar_eback(&this->base));
4039 this->seekhigh = NULL;
4040 this->state &= ~STRINGBUF_allocated;
4043 basic_streambuf_wchar__Init_empty(&this->base);
4046 /* ??1?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
4047 /* ??1?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
4048 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
4049 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
4050 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_dtor, 4)
4051 void __thiscall basic_stringbuf_wchar_dtor(basic_stringbuf_wchar *this)
4053 TRACE("(%p)\n", this);
4055 basic_stringbuf_wchar__Tidy(this);
4056 basic_streambuf_wchar_dtor(&this->base);
4059 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_vector_dtor, 8)
4060 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_vector_dtor(basic_stringbuf_wchar *this, unsigned int flags)
4062 TRACE("(%p %x)\n", this, flags);
4064 if(flags & 2) {
4065 /* we have an array, with the number of elements stored before the first object */
4066 INT_PTR i, *ptr = (INT_PTR *) this - 1;
4068 for (i = *ptr - 1; i >= 0; i--)
4069 basic_stringbuf_wchar_dtor(this+i);
4071 MSVCRT_operator_delete(ptr);
4072 }else {
4073 basic_stringbuf_wchar_dtor(this);
4075 if(flags & 1)
4076 MSVCRT_operator_delete(this);
4079 return this;
4082 /* ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z */
4083 /* ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z */
4084 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
4085 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
4086 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_overflow, 8)
4087 unsigned short __thiscall basic_stringbuf_wchar_overflow(basic_stringbuf_wchar *this, unsigned short meta)
4089 MSVCP_size_t oldsize, size;
4090 wchar_t *ptr, *buf;
4092 TRACE("(%p %x)\n", this, meta);
4094 if(meta == WEOF)
4095 return !WEOF;
4096 if(this->state & STRINGBUF_no_write)
4097 return WEOF;
4099 ptr = basic_streambuf_wchar_pptr(&this->base);
4100 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
4101 basic_streambuf_wchar_setp_next(&this->base, basic_streambuf_wchar_pbase(&this->base),
4102 this->seekhigh, basic_streambuf_wchar_epptr(&this->base));
4104 if(ptr && ptr<basic_streambuf_wchar_epptr(&this->base))
4105 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
4107 oldsize = (ptr ? basic_streambuf_wchar_epptr(&this->base)-basic_streambuf_wchar_eback(&this->base): 0);
4108 size = oldsize|0xf;
4109 size += size/2;
4110 buf = MSVCRT_operator_new(size*sizeof(wchar_t));
4111 if(!buf) {
4112 ERR("Out of memory\n");
4113 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
4116 if(!oldsize) {
4117 this->seekhigh = buf;
4118 basic_streambuf_wchar_setp(&this->base, buf, buf+size);
4119 if(this->state & STRINGBUF_no_read)
4120 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
4121 else
4122 basic_streambuf_wchar_setg(&this->base, buf, buf, buf+1);
4124 this->state |= STRINGBUF_allocated;
4125 }else {
4126 ptr = basic_streambuf_wchar_eback(&this->base);
4127 memcpy(buf, ptr, oldsize*sizeof(wchar_t));
4129 this->seekhigh = buf+(this->seekhigh-ptr);
4130 basic_streambuf_wchar_setp_next(&this->base, buf,
4131 buf+(basic_streambuf_wchar_pptr(&this->base)-ptr), buf+size);
4132 if(this->state & STRINGBUF_no_read)
4133 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
4134 else
4135 basic_streambuf_wchar_setg(&this->base, buf,
4136 buf+(basic_streambuf_wchar_gptr(&this->base)-ptr),
4137 basic_streambuf_wchar_pptr(&this->base)+1);
4139 MSVCRT_operator_delete(ptr);
4142 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
4145 /* ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z */
4146 /* ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z */
4147 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
4148 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
4149 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_pbackfail, 8)
4150 unsigned short __thiscall basic_stringbuf_wchar_pbackfail(basic_stringbuf_wchar *this, unsigned short c)
4152 wchar_t *cur;
4154 TRACE("(%p %x)\n", this, c);
4156 cur = basic_streambuf_wchar_gptr(&this->base);
4157 if(!cur || cur==basic_streambuf_wchar_eback(&this->base)
4158 || (c!=WEOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
4159 return WEOF;
4161 if(c != WEOF)
4162 cur[-1] = c;
4163 basic_streambuf_wchar_gbump(&this->base, -1);
4164 return c==WEOF ? !WEOF : c;
4167 /* ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGXZ */
4168 /* ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGXZ */
4169 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGXZ */
4170 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGXZ */
4171 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_underflow, 4)
4172 unsigned short __thiscall basic_stringbuf_wchar_underflow(basic_stringbuf_wchar *this)
4174 wchar_t *ptr, *cur;
4176 TRACE("(%p)\n", this);
4178 cur = basic_streambuf_wchar_gptr(&this->base);
4179 if(!cur || this->state&STRINGBUF_no_read)
4180 return WEOF;
4182 ptr = basic_streambuf_wchar_pptr(&this->base);
4183 if(this->seekhigh < ptr)
4184 this->seekhigh = ptr;
4186 ptr = basic_streambuf_wchar_egptr(&this->base);
4187 if(this->seekhigh > ptr)
4188 basic_streambuf_wchar_setg(&this->base, basic_streambuf_wchar_eback(&this->base), cur, this->seekhigh);
4190 if(cur < this->seekhigh)
4191 return *cur;
4192 return WEOF;
4195 /* ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4196 /* ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4197 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4198 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4199 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekoff, 20)
4200 fpos_int* __thiscall basic_stringbuf_wchar_seekoff(basic_stringbuf_wchar *this,
4201 fpos_int *ret, streamoff off, int way, int mode)
4203 wchar_t *beg, *cur_r, *cur_w;
4205 TRACE("(%p %p %ld %d %d)\n", this, ret, off, way, mode);
4207 cur_w = basic_streambuf_wchar_pptr(&this->base);
4208 if(cur_w > this->seekhigh)
4209 this->seekhigh = cur_w;
4211 ret->off = 0;
4212 ret->pos = 0;
4213 ret->state = 0;
4215 beg = basic_streambuf_wchar_eback(&this->base);
4216 cur_r = basic_streambuf_wchar_gptr(&this->base);
4217 if((mode & OPENMODE_in) && cur_r) {
4218 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
4219 off += cur_r-beg;
4220 else if(way == SEEKDIR_end)
4221 off += this->seekhigh-beg;
4222 else if(way != SEEKDIR_beg)
4223 off = -1;
4225 if(off<0 || off>this->seekhigh-beg) {
4226 off = -1;
4227 }else {
4228 basic_streambuf_wchar_gbump(&this->base, beg-cur_r+off);
4229 if((mode & OPENMODE_out) && cur_w) {
4230 basic_streambuf_wchar_setp_next(&this->base, beg,
4231 basic_streambuf_wchar_gptr(&this->base),
4232 basic_streambuf_wchar_epptr(&this->base));
4235 }else if((mode & OPENMODE_out) && cur_w) {
4236 if(way == SEEKDIR_cur)
4237 off += cur_w-beg;
4238 else if(way == SEEKDIR_end)
4239 off += this->seekhigh-beg;
4240 else if(way != SEEKDIR_beg)
4241 off = -1;
4243 if(off<0 || off>this->seekhigh-beg)
4244 off = -1;
4245 else
4246 basic_streambuf_wchar_pbump(&this->base, beg-cur_w+off);
4247 }else {
4248 off = -1;
4251 ret->off = off;
4252 return ret;
4255 /* ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4256 /* ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4257 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4258 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4259 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekpos, 36)
4260 fpos_int* __thiscall basic_stringbuf_wchar_seekpos(basic_stringbuf_wchar *this,
4261 fpos_int *ret, fpos_int pos, int mode)
4263 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
4265 if(pos.off==-1 && pos.pos==0 && pos.state==0) {
4266 *ret = pos;
4267 return ret;
4270 return basic_stringbuf_wchar_seekoff(this, ret, pos.off, SEEKDIR_beg, mode);
4273 /* ?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 */
4274 /* ?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 */
4275 /* ?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 */
4276 /* ?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 */
4277 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_str_set, 8)
4278 void __thiscall basic_stringbuf_wchar_str_set(basic_stringbuf_wchar *this, const basic_string_wchar *str)
4280 TRACE("(%p %p)\n", this, str);
4282 basic_stringbuf_wchar__Tidy(this);
4283 basic_stringbuf_wchar__Init(this, MSVCP_basic_string_wchar_c_str(str), str->size, this->state);
4286 /* ?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 */
4287 /* ?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 */
4288 /* ?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 */
4289 /* ?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 */
4290 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_str_get, 8)
4291 basic_string_wchar* __thiscall basic_stringbuf_wchar_str_get(const basic_stringbuf_wchar *this, basic_string_wchar *ret)
4293 wchar_t *ptr;
4295 TRACE("(%p)\n", this);
4297 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_wchar_pptr(&this->base)) {
4298 wchar_t *pptr;
4300 ptr = basic_streambuf_wchar_pbase(&this->base);
4301 pptr = basic_streambuf_wchar_pptr(&this->base);
4303 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
4306 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_wchar_gptr(&this->base)) {
4307 ptr = basic_streambuf_wchar_eback(&this->base);
4308 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, basic_streambuf_wchar_egptr(&this->base) - ptr);
4311 return MSVCP_basic_string_wchar_ctor(ret);
4314 /* ??0ios_base@std@@IAE@XZ */
4315 /* ??0ios_base@std@@IEAA@XZ */
4316 DEFINE_THISCALL_WRAPPER(ios_base_ctor, 4)
4317 ios_base* __thiscall ios_base_ctor(ios_base *this)
4319 TRACE("(%p)\n", this);
4320 this->vtable = &MSVCP_ios_base_vtable;
4321 return this;
4324 /* ??0ios_base@std@@QAE@ABV01@@Z */
4325 /* ??0ios_base@std@@QEAA@AEBV01@@Z */
4326 DEFINE_THISCALL_WRAPPER(ios_base_copy_ctor, 8)
4327 ios_base* __thiscall ios_base_copy_ctor(ios_base *this, const ios_base *copy)
4329 TRACE("(%p %p)\n", this, copy);
4330 *this = *copy;
4331 this->vtable = &MSVCP_ios_base_vtable;
4332 return this;
4335 /* ?_Callfns@ios_base@std@@AAEXW4event@12@@Z */
4336 /* ?_Callfns@ios_base@std@@AEAAXW4event@12@@Z */
4337 DEFINE_THISCALL_WRAPPER(ios_base_Callfns, 8)
4338 void __thiscall ios_base_Callfns(ios_base *this, IOS_BASE_event event)
4340 IOS_BASE_fnarray *cur;
4342 TRACE("(%p %x)\n", this, event);
4344 for(cur=this->calls; cur; cur=cur->next)
4345 cur->event_handler(event, this, cur->index);
4348 /* ?_Tidy@ios_base@std@@AAAXXZ */
4349 /* ?_Tidy@ios_base@std@@AEAAXXZ */
4350 void CDECL ios_base_Tidy(ios_base *this)
4352 IOS_BASE_iosarray *arr_cur, *arr_next;
4353 IOS_BASE_fnarray *event_cur, *event_next;
4355 TRACE("(%p)\n", this);
4357 ios_base_Callfns(this, EVENT_erase_event);
4359 for(arr_cur=this->arr; arr_cur; arr_cur=arr_next) {
4360 arr_next = arr_cur->next;
4361 MSVCRT_operator_delete(arr_cur);
4363 this->arr = NULL;
4365 for(event_cur=this->calls; event_cur; event_cur=event_next) {
4366 event_next = event_cur->next;
4367 MSVCRT_operator_delete(event_cur);
4369 this->calls = NULL;
4372 /* ?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z */
4373 /* ?_Ios_base_dtor@ios_base@std@@CAXPEAV12@@Z */
4374 static void ios_base_Ios_base_dtor(ios_base *obj)
4376 TRACE("(%p)\n", obj);
4377 if(obj->loc) {
4378 locale_dtor(obj->loc);
4379 MSVCRT_operator_delete(obj->loc);
4381 ios_base_Tidy(obj);
4384 /* ??1ios_base@std@@UAE@XZ */
4385 /* ??1ios_base@std@@UEAA@XZ */
4386 DEFINE_THISCALL_WRAPPER(ios_base_dtor, 4)
4387 void __thiscall ios_base_dtor(ios_base *this)
4389 ios_base_Ios_base_dtor(this);
4392 DEFINE_THISCALL_WRAPPER(ios_base_vector_dtor, 8)
4393 ios_base* __thiscall ios_base_vector_dtor(ios_base *this, unsigned int flags)
4395 TRACE("(%p %x)\n", this, flags);
4396 if(flags & 2) {
4397 /* we have an array, with the number of elements stored before the first object */
4398 INT_PTR i, *ptr = (INT_PTR *)this-1;
4400 for(i=*ptr-1; i>=0; i--)
4401 ios_base_dtor(this+i);
4402 MSVCRT_operator_delete(ptr);
4403 } else {
4404 ios_base_dtor(this);
4405 if(flags & 1)
4406 MSVCRT_operator_delete(this);
4409 return this;
4412 DEFINE_THISCALL_WRAPPER(iosb_vector_dtor, 8)
4413 void* __thiscall iosb_vector_dtor(void *this, unsigned int flags)
4415 TRACE("(%p %x)\n", this, flags);
4416 if(flags & 2) {
4417 INT_PTR *ptr = (INT_PTR *)this-1;
4418 MSVCRT_operator_delete(ptr);
4419 } else {
4420 if(flags & 1)
4421 MSVCRT_operator_delete(this);
4424 return this;
4427 /* ?_Findarr@ios_base@std@@AAEAAU_Iosarray@12@H@Z */
4428 /* ?_Findarr@ios_base@std@@AEAAAEAU_Iosarray@12@H@Z */
4429 DEFINE_THISCALL_WRAPPER(ios_base_Findarr, 8)
4430 IOS_BASE_iosarray* __thiscall ios_base_Findarr(ios_base *this, int index)
4432 IOS_BASE_iosarray *p;
4434 TRACE("(%p %d)\n", this, index);
4436 for(p=this->arr; p; p=p->next) {
4437 if(p->index == index)
4438 return p;
4441 for(p=this->arr; p; p=p->next) {
4442 if(!p->long_val && !p->ptr_val) {
4443 p->index = index;
4444 return p;
4448 p = MSVCRT_operator_new(sizeof(IOS_BASE_iosarray));
4449 p->next = this->arr;
4450 p->index = index;
4451 p->long_val = 0;
4452 p->ptr_val = NULL;
4453 this->arr = p;
4454 return p;
4457 /* ?iword@ios_base@std@@QAEAAJH@Z */
4458 /* ?iword@ios_base@std@@QEAAAEAJH@Z */
4459 DEFINE_THISCALL_WRAPPER(ios_base_iword, 8)
4460 LONG* __thiscall ios_base_iword(ios_base *this, int index)
4462 TRACE("(%p %d)\n", this, index);
4463 return &ios_base_Findarr(this, index)->long_val;
4466 /* ?pword@ios_base@std@@QAEAAPAXH@Z */
4467 /* ?pword@ios_base@std@@QEAAAEAPEAXH@Z */
4468 DEFINE_THISCALL_WRAPPER(ios_base_pword, 8)
4469 void** __thiscall ios_base_pword(ios_base *this, int index)
4471 TRACE("(%p %d)\n", this, index);
4472 return &ios_base_Findarr(this, index)->ptr_val;
4475 /* ?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z */
4476 /* ?register_callback@ios_base@std@@QEAAXP6AXW4event@12@AEAV12@H@ZH@Z */
4477 DEFINE_THISCALL_WRAPPER(ios_base_register_callback, 12)
4478 void __thiscall ios_base_register_callback(ios_base *this, IOS_BASE_event_callback callback, int index)
4480 IOS_BASE_fnarray *event;
4482 TRACE("(%p %p %d)\n", this, callback, index);
4484 event = MSVCRT_operator_new(sizeof(IOS_BASE_fnarray));
4485 event->next = this->calls;
4486 event->index = index;
4487 event->event_handler = callback;
4488 this->calls = event;
4491 /* ?clear@ios_base@std@@QAEXH_N@Z */
4492 /* ?clear@ios_base@std@@QEAAXH_N@Z */
4493 DEFINE_THISCALL_WRAPPER(ios_base_clear_reraise, 12)
4494 void __thiscall ios_base_clear_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise)
4496 TRACE("(%p %x %x)\n", this, state, reraise);
4498 this->state = state & IOSTATE_mask;
4499 if(!(this->state & this->except))
4500 return;
4502 if(reraise)
4503 throw_exception(EXCEPTION_RERAISE, NULL);
4504 else if(this->state & this->except & IOSTATE_eofbit)
4505 throw_exception(EXCEPTION_FAILURE, "eofbit is set");
4506 else if(this->state & this->except & IOSTATE_failbit)
4507 throw_exception(EXCEPTION_FAILURE, "failbit is set");
4508 else if(this->state & this->except & IOSTATE_badbit)
4509 throw_exception(EXCEPTION_FAILURE, "badbit is set");
4510 else if(this->state & this->except & IOSTATE__Hardfail)
4511 throw_exception(EXCEPTION_FAILURE, "_Hardfail is set");
4514 /* ?clear@ios_base@std@@QAEXH@Z */
4515 /* ?clear@ios_base@std@@QEAAXH@Z */
4516 DEFINE_THISCALL_WRAPPER(ios_base_clear, 8)
4517 void __thiscall ios_base_clear(ios_base *this, IOSB_iostate state)
4519 ios_base_clear_reraise(this, state, FALSE);
4522 /* ?clear@ios_base@std@@QAEXI@Z */
4523 /* ?clear@ios_base@std@@QEAAXI@Z */
4524 DEFINE_THISCALL_WRAPPER(ios_base_clear_unsigned, 8)
4525 void __thiscall ios_base_clear_unsigned(ios_base *this, unsigned int state)
4527 ios_base_clear_reraise(this, (IOSB_iostate)state, FALSE);
4530 /* ?exceptions@ios_base@std@@QAEXH@Z */
4531 /* ?exceptions@ios_base@std@@QEAAXH@Z */
4532 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set, 8)
4533 void __thiscall ios_base_exceptions_set(ios_base *this, IOSB_iostate state)
4535 TRACE("(%p %x)\n", this, state);
4536 this->except = state & IOSTATE_mask;
4537 ios_base_clear(this, this->state);
4540 /* ?exceptions@ios_base@std@@QAEXI@Z */
4541 /* ?exceptions@ios_base@std@@QEAAXI@Z */
4542 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set_unsigned, 8)
4543 void __thiscall ios_base_exceptions_set_unsigned(ios_base *this, unsigned int state)
4545 TRACE("(%p %x)\n", this, state);
4546 ios_base_exceptions_set(this, state);
4549 /* ?exceptions@ios_base@std@@QBEHXZ */
4550 /* ?exceptions@ios_base@std@@QEBAHXZ */
4551 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_get, 4)
4552 IOSB_iostate __thiscall ios_base_exceptions_get(ios_base *this)
4554 TRACE("(%p)\n", this);
4555 return this->except;
4558 /* ?copyfmt@ios_base@std@@QAEAAV12@ABV12@@Z */
4559 /* ?copyfmt@ios_base@std@@QEAAAEAV12@AEBV12@@Z */
4560 DEFINE_THISCALL_WRAPPER(ios_base_copyfmt, 8)
4561 ios_base* __thiscall ios_base_copyfmt(ios_base *this, const ios_base *rhs)
4563 TRACE("(%p %p)\n", this, rhs);
4565 if(this != rhs) {
4566 IOS_BASE_iosarray *arr_cur;
4567 IOS_BASE_fnarray *event_cur;
4569 ios_base_Tidy(this);
4571 for(arr_cur=rhs->arr; arr_cur; arr_cur=arr_cur->next) {
4572 if(arr_cur->long_val)
4573 *ios_base_iword(this, arr_cur->index) = arr_cur->long_val;
4574 if(arr_cur->ptr_val)
4575 *ios_base_pword(this, arr_cur->index) = arr_cur->ptr_val;
4577 this->stdstr = rhs->stdstr;
4578 this->fmtfl = rhs->fmtfl;
4579 this->prec = rhs->prec;
4580 this->wide = rhs->wide;
4581 locale_operator_assign(this->loc, rhs->loc);
4583 for(event_cur=rhs->calls; event_cur; event_cur=event_cur->next)
4584 ios_base_register_callback(this, event_cur->event_handler, event_cur->index);
4586 ios_base_Callfns(this, EVENT_copyfmt_event);
4587 ios_base_exceptions_set(this, rhs->except);
4590 return this;
4593 /* ??4ios_base@std@@QAEAAV01@ABV01@@Z */
4594 /* ??4ios_base@std@@QEAAAEAV01@AEBV01@@Z */
4595 DEFINE_THISCALL_WRAPPER(ios_base_assign, 8)
4596 ios_base* __thiscall ios_base_assign(ios_base *this, const ios_base *right)
4598 TRACE("(%p %p)\n", this, right);
4600 if(this != right) {
4601 this->state = right->state;
4602 ios_base_copyfmt(this, right);
4605 return this;
4608 /* ?fail@ios_base@std@@QBE_NXZ */
4609 /* ?fail@ios_base@std@@QEBA_NXZ */
4610 DEFINE_THISCALL_WRAPPER(ios_base_fail, 4)
4611 MSVCP_bool __thiscall ios_base_fail(const ios_base *this)
4613 TRACE("(%p)\n", this);
4614 return (this->state & (IOSTATE_failbit|IOSTATE_badbit)) != 0;
4617 /* ??7ios_base@std@@QBE_NXZ */
4618 /* ??7ios_base@std@@QEBA_NXZ */
4619 DEFINE_THISCALL_WRAPPER(ios_base_op_succ, 4)
4620 MSVCP_bool __thiscall ios_base_op_succ(const ios_base *this)
4622 TRACE("(%p)\n", this);
4623 return ios_base_fail(this);
4626 /* ??Bios_base@std@@QBEPAXXZ */
4627 /* ??Bios_base@std@@QEBAPEAXXZ */
4628 DEFINE_THISCALL_WRAPPER(ios_base_op_fail, 4)
4629 void* __thiscall ios_base_op_fail(const ios_base *this)
4631 TRACE("(%p)\n", this);
4632 return ios_base_fail(this) ? NULL : (void*)this;
4635 /* ?_Addstd@ios_base@std@@SAXPAV12@@Z */
4636 /* ?_Addstd@ios_base@std@@SAXPEAV12@@Z */
4637 static void ios_base_Addstd(ios_base *add)
4639 FIXME("(%p) stub\n", add);
4642 /* ?_Init@ios_base@std@@IAEXXZ */
4643 /* ?_Init@ios_base@std@@IEAAXXZ */
4644 DEFINE_THISCALL_WRAPPER(ios_base__Init, 4)
4645 void __thiscall ios_base__Init(ios_base *this)
4647 TRACE("(%p)\n", this);
4649 this->stdstr = 0;
4650 this->state = this->except = IOSTATE_goodbit;
4651 this->fmtfl = FMTFLAG_skipws | FMTFLAG_dec;
4652 this->prec = 6;
4653 this->wide = 0;
4654 this->arr = NULL;
4655 this->calls = NULL;
4656 this->loc = MSVCRT_operator_new(sizeof(locale));
4657 locale_ctor(this->loc);
4660 /* ?bad@ios_base@std@@QBE_NXZ */
4661 /* ?bad@ios_base@std@@QEBA_NXZ */
4662 DEFINE_THISCALL_WRAPPER(ios_base_bad, 4)
4663 MSVCP_bool __thiscall ios_base_bad(const ios_base *this)
4665 TRACE("(%p)\n", this);
4666 return (this->state & IOSTATE_badbit) != 0;
4669 /* ?eof@ios_base@std@@QBE_NXZ */
4670 /* ?eof@ios_base@std@@QEBA_NXZ */
4671 DEFINE_THISCALL_WRAPPER(ios_base_eof, 4)
4672 MSVCP_bool __thiscall ios_base_eof(const ios_base *this)
4674 TRACE("(%p)\n", this);
4675 return (this->state & IOSTATE_eofbit) != 0;
4678 /* ?flags@ios_base@std@@QAEHH@Z */
4679 /* ?flags@ios_base@std@@QEAAHH@Z */
4680 DEFINE_THISCALL_WRAPPER(ios_base_flags_set, 8)
4681 IOSB_fmtflags __thiscall ios_base_flags_set(ios_base *this, IOSB_fmtflags flags)
4683 IOSB_fmtflags ret = this->fmtfl;
4685 TRACE("(%p %x)\n", this, flags);
4687 this->fmtfl = flags & FMTFLAG_mask;
4688 return ret;
4691 /* ?flags@ios_base@std@@QBEHXZ */
4692 /* ?flags@ios_base@std@@QEBAHXZ */
4693 DEFINE_THISCALL_WRAPPER(ios_base_flags_get, 4)
4694 IOSB_fmtflags __thiscall ios_base_flags_get(const ios_base *this)
4696 TRACE("(%p)\n", this);
4697 return this->fmtfl;
4700 /* ?getloc@ios_base@std@@QBE?AVlocale@2@XZ */
4701 /* ?getloc@ios_base@std@@QEBA?AVlocale@2@XZ */
4702 DEFINE_THISCALL_WRAPPER(ios_base_getloc, 8)
4703 locale* __thiscall ios_base_getloc(const ios_base *this, locale *ret)
4705 TRACE("(%p)\n", this);
4706 return locale_copy_ctor(ret, this->loc);
4709 /* ?good@ios_base@std@@QBE_NXZ */
4710 /* ?good@ios_base@std@@QEBA_NXZ */
4711 DEFINE_THISCALL_WRAPPER(ios_base_good, 4)
4712 MSVCP_bool __thiscall ios_base_good(const ios_base *this)
4714 TRACE("(%p)\n", this);
4715 return this->state == IOSTATE_goodbit;
4718 /* ?imbue@ios_base@std@@QAE?AVlocale@2@ABV32@@Z */
4719 /* ?imbue@ios_base@std@@QEAA?AVlocale@2@AEBV32@@Z */
4720 DEFINE_THISCALL_WRAPPER(ios_base_imbue, 12)
4721 locale* __thiscall ios_base_imbue(ios_base *this, locale *ret, const locale *loc)
4723 TRACE("(%p %p)\n", this, loc);
4724 *ret = *this->loc;
4725 locale_copy_ctor(this->loc, loc);
4726 return ret;
4729 /* ?precision@ios_base@std@@QAEHH@Z */
4730 /* ?precision@ios_base@std@@QEAA_J_J@Z */
4731 DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 8)
4732 streamsize __thiscall ios_base_precision_set(ios_base *this, streamsize precision)
4734 streamsize ret = this->prec;
4736 TRACE("(%p %ld)\n", this, precision);
4738 this->prec = precision;
4739 return ret;
4742 /* ?precision@ios_base@std@@QBEHXZ */
4743 /* ?precision@ios_base@std@@QEBA_JXZ */
4744 DEFINE_THISCALL_WRAPPER(ios_base_precision_get, 4)
4745 streamsize __thiscall ios_base_precision_get(const ios_base *this)
4747 TRACE("(%p)\n", this);
4748 return this->prec;
4751 /* ?rdstate@ios_base@std@@QBEHXZ */
4752 /* ?rdstate@ios_base@std@@QEBAHXZ */
4753 DEFINE_THISCALL_WRAPPER(ios_base_rdstate, 4)
4754 IOSB_iostate __thiscall ios_base_rdstate(const ios_base *this)
4756 TRACE("(%p)\n", this);
4757 return this->state;
4760 /* ?setf@ios_base@std@@QAEHHH@Z */
4761 /* ?setf@ios_base@std@@QEAAHHH@Z */
4762 DEFINE_THISCALL_WRAPPER(ios_base_setf_mask, 12)
4763 IOSB_fmtflags __thiscall ios_base_setf_mask(ios_base *this, IOSB_fmtflags flags, IOSB_fmtflags mask)
4765 IOSB_fmtflags ret = this->fmtfl;
4767 TRACE("(%p %x %x)\n", this, flags, mask);
4769 this->fmtfl = (this->fmtfl & (~mask)) | (flags & mask & FMTFLAG_mask);
4770 return ret;
4773 /* ?setf@ios_base@std@@QAEHH@Z */
4774 /* ?setf@ios_base@std@@QEAAHH@Z */
4775 DEFINE_THISCALL_WRAPPER(ios_base_setf, 8)
4776 IOSB_fmtflags __thiscall ios_base_setf(ios_base *this, IOSB_fmtflags flags)
4778 return ios_base_setf_mask(this, flags, ~0);
4781 /* ?setstate@ios_base@std@@QAEXH_N@Z */
4782 /* ?setstate@ios_base@std@@QEAAXH_N@Z */
4783 DEFINE_THISCALL_WRAPPER(ios_base_setstate_reraise, 12)
4784 void __thiscall ios_base_setstate_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise)
4786 TRACE("(%p %x %x)\n", this, state, reraise);
4788 if(state != IOSTATE_goodbit)
4789 ios_base_clear_reraise(this, this->state | state, reraise);
4792 /* ?setstate@ios_base@std@@QAEXH@Z */
4793 /* ?setstate@ios_base@std@@QEAAXH@Z */
4794 DEFINE_THISCALL_WRAPPER(ios_base_setstate, 8)
4795 void __thiscall ios_base_setstate(ios_base *this, IOSB_iostate state)
4797 ios_base_setstate_reraise(this, state, FALSE);
4800 /* ?setstate@ios_base@std@@QAEXI@Z */
4801 /* ?setstate@ios_base@std@@QEAAXI@Z */
4802 DEFINE_THISCALL_WRAPPER(ios_base_setstate_unsigned, 8)
4803 void __thiscall ios_base_setstate_unsigned(ios_base *this, unsigned int state)
4805 ios_base_setstate_reraise(this, (IOSB_iostate)state, FALSE);
4808 /* ?sync_with_stdio@ios_base@std@@SA_N_N@Z */
4809 MSVCP_bool CDECL ios_base_sync_with_stdio(MSVCP_bool sync)
4811 _Lockit lock;
4812 MSVCP_bool ret;
4814 TRACE("(%x)\n", sync);
4816 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
4817 ret = ios_base_Sync;
4818 ios_base_Sync = sync;
4819 _Lockit_dtor(&lock);
4820 return ret;
4823 /* ?unsetf@ios_base@std@@QAEXH@Z */
4824 /* ?unsetf@ios_base@std@@QEAAXH@Z */
4825 DEFINE_THISCALL_WRAPPER(ios_base_unsetf, 8)
4826 void __thiscall ios_base_unsetf(ios_base *this, IOSB_fmtflags flags)
4828 TRACE("(%p %x)\n", this, flags);
4829 this->fmtfl &= ~flags;
4832 /* ?width@ios_base@std@@QAEHH@Z */
4833 /* ?width@ios_base@std@@QEAA_J_J@Z */
4834 DEFINE_THISCALL_WRAPPER(ios_base_width_set, 8)
4835 streamsize __thiscall ios_base_width_set(ios_base *this, streamsize width)
4837 streamsize ret = this->wide;
4839 TRACE("(%p %ld)\n", this, width);
4841 this->wide = width;
4842 return ret;
4845 /* ?width@ios_base@std@@QBEHXZ */
4846 /* ?width@ios_base@std@@QEBA_JXZ */
4847 DEFINE_THISCALL_WRAPPER(ios_base_width_get, 4)
4848 streamsize __thiscall ios_base_width_get(ios_base *this)
4850 TRACE("(%p)\n", this);
4851 return this->wide;
4854 /* ?xalloc@ios_base@std@@SAHXZ */
4855 int CDECL ios_base_xalloc(void)
4857 _Lockit lock;
4858 int ret;
4860 TRACE("\n");
4862 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
4863 ret = ios_base_Index++;
4864 _Lockit_dtor(&lock);
4865 return ret;
4868 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ */
4869 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ */
4870 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor, 4)
4871 basic_ios_char* __thiscall basic_ios_char_ctor(basic_ios_char *this)
4873 TRACE("(%p)\n", this);
4875 ios_base_ctor(&this->base);
4876 this->base.vtable = &MSVCP_basic_ios_char_vtable;
4877 return this;
4880 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IAEXPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
4881 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
4882 DEFINE_THISCALL_WRAPPER(basic_ios_char_init, 12)
4883 void __thiscall basic_ios_char_init(basic_ios_char *this, basic_streambuf_char *streambuf, MSVCP_bool isstd)
4885 TRACE("(%p %p %x)\n", this, streambuf, isstd);
4886 ios_base__Init(&this->base);
4887 this->strbuf = streambuf;
4888 this->stream = NULL;
4889 this->fillch = ' ';
4891 if(!streambuf)
4892 ios_base_setstate(&this->base, IOSTATE_badbit);
4894 if(isstd)
4895 FIXME("standard streams not handled yet\n");
4898 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
4899 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
4900 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor_streambuf, 8)
4901 basic_ios_char* __thiscall basic_ios_char_ctor_streambuf(basic_ios_char *this, basic_streambuf_char *strbuf)
4903 TRACE("(%p %p)\n", this, strbuf);
4905 basic_ios_char_ctor(this);
4906 basic_ios_char_init(this, strbuf, FALSE);
4907 return this;
4910 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ */
4911 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ */
4912 DEFINE_THISCALL_WRAPPER(basic_ios_char_dtor, 4)
4913 void __thiscall basic_ios_char_dtor(basic_ios_char *this)
4915 TRACE("(%p)\n", this);
4916 ios_base_dtor(&this->base);
4919 DEFINE_THISCALL_WRAPPER(basic_ios_char_vector_dtor, 8)
4920 basic_ios_char* __thiscall basic_ios_char_vector_dtor(basic_ios_char *this, unsigned int flags)
4922 TRACE("(%p %x)\n", this, flags);
4923 if(flags & 2) {
4924 /* we have an array, with the number of elements stored before the first object */
4925 INT_PTR i, *ptr = (INT_PTR *)this-1;
4927 for(i=*ptr-1; i>=0; i--)
4928 basic_ios_char_dtor(this+i);
4929 MSVCRT_operator_delete(ptr);
4930 } else {
4931 basic_ios_char_dtor(this);
4932 if(flags & 1)
4933 MSVCRT_operator_delete(this);
4936 return this;
4939 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
4940 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
4941 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear_reraise, 12)
4942 void __thiscall basic_ios_char_clear_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise)
4944 TRACE("(%p %x %x)\n", this, state, reraise);
4945 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
4948 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
4949 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
4950 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear, 8)
4951 void __thiscall basic_ios_char_clear(basic_ios_char *this, unsigned int state)
4953 basic_ios_char_clear_reraise(this, (IOSB_iostate)state, FALSE);
4956 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEAAV12@ABV12@@Z */
4957 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEBV12@@Z */
4958 DEFINE_THISCALL_WRAPPER(basic_ios_char_copyfmt, 8)
4959 basic_ios_char* __thiscall basic_ios_char_copyfmt(basic_ios_char *this, basic_ios_char *copy)
4961 TRACE("(%p %p)\n", this, copy);
4962 if(this == copy)
4963 return this;
4965 this->stream = copy->stream;
4966 this->fillch = copy->fillch;
4967 ios_base_copyfmt(&this->base, &copy->base);
4968 return this;
4971 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEDD@Z */
4972 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAADD@Z */
4973 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_set, 8)
4974 char __thiscall basic_ios_char_fill_set(basic_ios_char *this, char fill)
4976 char ret = this->fillch;
4978 TRACE("(%p %c)\n", this, fill);
4980 this->fillch = fill;
4981 return ret;
4984 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ */
4985 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ */
4986 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_get, 4)
4987 char __thiscall basic_ios_char_fill_get(basic_ios_char *this)
4989 TRACE("(%p)\n", this);
4990 return this->fillch;
4993 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
4994 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
4995 DEFINE_THISCALL_WRAPPER(basic_ios_char_imbue, 12)
4996 locale *__thiscall basic_ios_char_imbue(basic_ios_char *this, locale *ret, const locale *loc)
4998 TRACE("(%p %p %p)\n", this, ret, loc);
5000 if(this->strbuf) {
5001 basic_streambuf_char_pubimbue(this->strbuf, ret, loc);
5002 locale_dtor(ret);
5005 return ios_base_imbue(&this->base, ret, loc);
5008 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDDD@Z */
5009 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADDD@Z */
5010 DEFINE_THISCALL_WRAPPER(basic_ios_char_narrow, 12)
5011 char __thiscall basic_ios_char_narrow(basic_ios_char *this, char ch, char def)
5013 TRACE("(%p %c %c)\n", this, ch, def);
5014 return ctype_char_narrow_ch(ctype_char_use_facet(this->strbuf->loc), ch, def);
5017 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PAV32@@Z */
5018 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAV32@@Z */
5019 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_set, 8)
5020 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_set(basic_ios_char *this, basic_streambuf_char *streambuf)
5022 basic_streambuf_char *ret = this->strbuf;
5024 TRACE("(%p %p)\n", this, streambuf);
5026 this->strbuf = streambuf;
5027 basic_ios_char_clear(this, IOSTATE_goodbit);
5028 return ret;
5031 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
5032 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
5033 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_get, 4)
5034 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_get(const basic_ios_char *this)
5036 TRACE("(%p)\n", this);
5037 return this->strbuf;
5040 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
5041 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
5042 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate_reraise, 12)
5043 void __thiscall basic_ios_char_setstate_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise)
5045 TRACE("(%p %x %x)\n", this, state, reraise);
5047 if(state != IOSTATE_goodbit)
5048 basic_ios_char_clear_reraise(this, this->base.state | state, reraise);
5051 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
5052 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
5053 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate, 8)
5054 void __thiscall basic_ios_char_setstate(basic_ios_char *this, unsigned int state)
5056 basic_ios_char_setstate_reraise(this, (IOSB_iostate)state, FALSE);
5059 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@PAV32@@Z */
5060 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@PEAV32@@Z */
5061 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_set, 8)
5062 basic_ostream_char* __thiscall basic_ios_char_tie_set(basic_ios_char *this, basic_ostream_char *ostream)
5064 basic_ostream_char *ret = this->stream;
5066 TRACE("(%p %p)\n", this, ostream);
5068 this->stream = ostream;
5069 return ret;
5072 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
5073 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
5074 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_get, 4)
5075 basic_ostream_char* __thiscall basic_ios_char_tie_get(const basic_ios_char *this)
5077 TRACE("(%p)\n", this);
5078 return this->stream;
5081 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z */
5082 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z */
5083 DEFINE_THISCALL_WRAPPER(basic_ios_char_widen, 8)
5084 char __thiscall basic_ios_char_widen(basic_ios_char *this, char ch)
5086 TRACE("(%p %c)\n", this, ch);
5087 return ctype_char_widen_ch(ctype_char_use_facet(this->strbuf->loc), ch);
5091 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
5092 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
5093 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor, 4)
5094 basic_ios_wchar* __thiscall basic_ios_wchar_ctor(basic_ios_wchar *this)
5096 TRACE("(%p)\n", this);
5098 ios_base_ctor(&this->base);
5099 this->base.vtable = &MSVCP_basic_ios_wchar_vtable;
5100 return this;
5103 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IAE@XZ */
5104 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IEAA@XZ */
5105 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor, 4)
5106 basic_ios_wchar* __thiscall basic_ios_short_ctor(basic_ios_wchar *this)
5108 basic_ios_wchar_ctor(this);
5109 this->base.vtable = &MSVCP_basic_ios_short_vtable;
5110 return this;
5113 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
5114 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
5115 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IAEXPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
5116 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
5117 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_init, 12)
5118 void __thiscall basic_ios_wchar_init(basic_ios_wchar *this, basic_streambuf_wchar *streambuf, MSVCP_bool isstd)
5120 TRACE("(%p %p %x)\n", this, streambuf, isstd);
5121 ios_base__Init(&this->base);
5122 this->strbuf = streambuf;
5123 this->stream = NULL;
5124 this->fillch = ' ';
5126 if(!streambuf)
5127 ios_base_setstate(&this->base, IOSTATE_badbit);
5129 if(isstd)
5130 FIXME("standard streams not handled yet\n");
5133 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
5134 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
5135 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor_streambuf, 8)
5136 basic_ios_wchar* __thiscall basic_ios_wchar_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
5138 TRACE("(%p %p)\n", this, strbuf);
5140 basic_ios_wchar_ctor(this);
5141 basic_ios_wchar_init(this, strbuf, FALSE);
5142 return this;
5145 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
5146 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
5147 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor_streambuf, 8)
5148 basic_ios_wchar* __thiscall basic_ios_short_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
5150 basic_ios_wchar_ctor_streambuf(this, strbuf);
5151 this->base.vtable = &MSVCP_basic_ios_short_vtable;
5152 return this;
5155 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
5156 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
5157 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UAE@XZ */
5158 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UEAA@XZ */
5159 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_dtor, 4)
5160 void __thiscall basic_ios_wchar_dtor(basic_ios_wchar *this)
5162 TRACE("(%p)\n", this);
5163 ios_base_dtor(&this->base);
5166 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_vector_dtor, 8)
5167 basic_ios_wchar* __thiscall basic_ios_wchar_vector_dtor(basic_ios_wchar *this, unsigned int flags)
5169 TRACE("(%p %x)\n", this, flags);
5170 if(flags & 2) {
5171 /* we have an array, with the number of elements stored before the first object */
5172 INT_PTR i, *ptr = (INT_PTR *)this-1;
5174 for(i=*ptr-1; i>=0; i--)
5175 basic_ios_wchar_dtor(this+i);
5176 MSVCRT_operator_delete(ptr);
5177 } else {
5178 basic_ios_wchar_dtor(this);
5179 if(flags & 1)
5180 MSVCRT_operator_delete(this);
5183 return this;
5186 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
5187 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
5188 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
5189 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
5190 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear_reraise, 12)
5191 void __thiscall basic_ios_wchar_clear_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise)
5193 TRACE("(%p %x %x)\n", this, state, reraise);
5194 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
5197 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
5198 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
5199 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
5200 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
5201 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear, 8)
5202 void __thiscall basic_ios_wchar_clear(basic_ios_wchar *this, unsigned int state)
5204 basic_ios_wchar_clear_reraise(this, (IOSB_iostate)state, FALSE);
5207 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEAAV12@ABV12@@Z */
5208 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEBV12@@Z */
5209 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEAAV12@ABV12@@Z */
5210 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEBV12@@Z */
5211 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_copyfmt, 8)
5212 basic_ios_wchar* __thiscall basic_ios_wchar_copyfmt(basic_ios_wchar *this, basic_ios_wchar *copy)
5214 TRACE("(%p %p)\n", this, copy);
5215 if(this == copy)
5216 return this;
5218 this->stream = copy->stream;
5219 this->fillch = copy->fillch;
5220 ios_base_copyfmt(&this->base, &copy->base);
5221 return this;
5224 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE_W_W@Z */
5225 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA_W_W@Z */
5226 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEGG@Z */
5227 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
5228 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_set, 8)
5229 wchar_t __thiscall basic_ios_wchar_fill_set(basic_ios_wchar *this, wchar_t fill)
5231 wchar_t ret = this->fillch;
5233 TRACE("(%p %c)\n", this, fill);
5235 this->fillch = fill;
5236 return ret;
5239 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WXZ */
5240 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WXZ */
5241 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGXZ */
5242 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGXZ */
5243 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_get, 4)
5244 wchar_t __thiscall basic_ios_wchar_fill_get(basic_ios_wchar *this)
5246 TRACE("(%p)\n", this);
5247 return this->fillch;
5250 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
5251 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
5252 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
5253 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
5254 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_imbue, 12)
5255 locale *__thiscall basic_ios_wchar_imbue(basic_ios_wchar *this, locale *ret, const locale *loc)
5257 TRACE("(%p %p %p)\n", this, ret, loc);
5259 if(this->strbuf) {
5260 basic_streambuf_wchar_pubimbue(this->strbuf, ret, loc);
5261 locale_dtor(ret);
5264 return ios_base_imbue(&this->base, ret, loc);
5267 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBED_WD@Z */
5268 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAD_WD@Z */
5269 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEDGD@Z */
5270 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBADGD@Z */
5271 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_narrow, 12)
5272 char __thiscall basic_ios_wchar_narrow(basic_ios_wchar *this, wchar_t ch, char def)
5274 TRACE("(%p %c %c)\n", this, ch, def);
5275 return ctype_wchar_narrow_ch(ctype_wchar_use_facet(this->strbuf->loc), ch, def);
5278 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
5279 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
5280 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAV32@@Z */
5281 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAV32@@Z */
5282 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_set, 8)
5283 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_set(basic_ios_wchar *this, basic_streambuf_wchar *streambuf)
5285 basic_streambuf_wchar *ret = this->strbuf;
5287 TRACE("(%p %p)\n", this, streambuf);
5289 this->strbuf = streambuf;
5290 basic_ios_wchar_clear(this, IOSTATE_goodbit);
5291 return ret;
5294 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
5295 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
5296 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
5297 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
5298 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_get, 4)
5299 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_get(const basic_ios_wchar *this)
5301 TRACE("(%p)\n", this);
5302 return this->strbuf;
5305 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
5306 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
5307 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
5308 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
5309 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate_reraise, 12)
5310 void __thiscall basic_ios_wchar_setstate_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise)
5312 TRACE("(%p %x %x)\n", this, state, reraise);
5314 if(state != IOSTATE_goodbit)
5315 basic_ios_wchar_clear_reraise(this, this->base.state | state, reraise);
5318 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
5319 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
5320 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
5321 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
5322 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate, 8)
5323 void __thiscall basic_ios_wchar_setstate(basic_ios_wchar *this, IOSB_iostate state)
5325 basic_ios_wchar_setstate_reraise(this, state, FALSE);
5328 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
5329 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
5330 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@PAV32@@Z */
5331 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@PEAV32@@Z */
5332 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_set, 8)
5333 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_set(basic_ios_wchar *this, basic_ostream_wchar *ostream)
5335 basic_ostream_wchar *ret = this->stream;
5337 TRACE("(%p %p)\n", this, ostream);
5339 this->stream = ostream;
5340 return ret;
5343 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
5344 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
5345 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
5346 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
5347 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_get, 4)
5348 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_get(const basic_ios_wchar *this)
5350 TRACE("(%p)\n", this);
5351 return this->stream;
5354 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WD@Z */
5355 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WD@Z */
5356 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGD@Z */
5357 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGD@Z */
5358 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_widen, 8)
5359 wchar_t __thiscall basic_ios_wchar_widen(basic_ios_wchar *this, char ch)
5361 TRACE("(%p %c)\n", this, ch);
5362 return ctype_wchar_widen_ch(ctype_wchar_use_facet(this->strbuf->loc), ch);
5365 /* Caution: basic_ostream uses virtual inheritance.
5366 * All constructors have additional parameter that says if base class should be initialized.
5367 * Base class needs to be accessed using vbtable.
5369 static inline basic_ios_char* basic_ostream_char_get_basic_ios(basic_ostream_char *this)
5371 return (basic_ios_char*)((char*)this+this->vbtable[1]);
5374 static inline basic_ios_char* basic_ostream_char_to_basic_ios(basic_ostream_char *ptr)
5376 return (basic_ios_char*)((char*)ptr+basic_ostream_char_vbtable[1]);
5379 static inline basic_ostream_char* basic_ostream_char_from_basic_ios(basic_ios_char *ptr)
5381 return (basic_ostream_char*)((char*)ptr-basic_ostream_char_vbtable[1]);
5384 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
5385 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
5386 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor, 16)
5387 basic_ostream_char* __thiscall basic_ostream_char_ctor(basic_ostream_char *this,
5388 basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
5390 basic_ios_char *base;
5392 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
5394 if(virt_init) {
5395 this->vbtable = basic_ostream_char_vbtable;
5396 base = basic_ostream_char_get_basic_ios(this);
5397 basic_ios_char_ctor(base);
5398 }else {
5399 base = basic_ostream_char_get_basic_ios(this);
5402 base->base.vtable = &MSVCP_basic_ostream_char_vtable;
5403 basic_ios_char_init(base, strbuf, isstd);
5404 return this;
5407 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
5408 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
5409 static basic_ostream_char* basic_ostream_char_ctor_uninitialized(basic_ostream_char *this,
5410 int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init)
5412 basic_ios_char *base;
5414 TRACE("(%p %d %x)\n", this, uninitialized, addstd);
5416 if(virt_init) {
5417 this->vbtable = basic_ostream_char_vbtable;
5418 base = basic_ostream_char_get_basic_ios(this);
5419 basic_ios_char_ctor(base);
5420 }else {
5421 base = basic_ostream_char_get_basic_ios(this);
5424 base->base.vtable = &MSVCP_basic_ostream_char_vtable;
5425 if(addstd)
5426 ios_base_Addstd(&base->base);
5427 return this;
5430 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
5431 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
5432 DEFINE_THISCALL_WRAPPER(basic_ostream_char_dtor, 4)
5433 void __thiscall basic_ostream_char_dtor(basic_ios_char *base)
5435 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
5437 /* don't destroy virtual base here */
5438 TRACE("(%p)\n", this);
5441 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
5442 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
5443 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vbase_dtor, 4)
5444 void __thiscall basic_ostream_char_vbase_dtor(basic_ostream_char *this)
5446 TRACE("(%p)\n", this);
5447 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(this));
5448 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(this));
5451 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vector_dtor, 8)
5452 basic_ostream_char* __thiscall basic_ostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
5454 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
5456 TRACE("(%p %x)\n", this, flags);
5458 if(flags & 2) {
5459 /* we have an array, with the number of elements stored before the first object */
5460 INT_PTR i, *ptr = (INT_PTR *)this-1;
5462 for(i=*ptr-1; i>=0; i--)
5463 basic_ostream_char_vbase_dtor(this+i);
5464 MSVCRT_operator_delete(ptr);
5465 } else {
5466 basic_ostream_char_vbase_dtor(this);
5467 if(flags & 1)
5468 MSVCRT_operator_delete(this);
5471 return this;
5474 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
5475 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
5476 DEFINE_THISCALL_WRAPPER(basic_ostream_char_flush, 4)
5477 basic_ostream_char* __thiscall basic_ostream_char_flush(basic_ostream_char *this)
5479 /* this function is not matching C++ specification */
5480 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5482 TRACE("(%p)\n", this);
5484 if(basic_ios_char_rdbuf_get(base) && ios_base_good(&base->base)
5485 && basic_streambuf_char_pubsync(basic_ios_char_rdbuf_get(base))==-1)
5486 basic_ios_char_setstate(base, IOSTATE_badbit);
5487 return this;
5490 /* ?flush@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
5491 /* ?flush@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
5492 basic_ostream_char* __cdecl flush_ostream_char(basic_ostream_char *ostream)
5494 return basic_ostream_char_flush(ostream);
5497 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
5498 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
5499 DEFINE_THISCALL_WRAPPER(basic_ostream_char__Osfx, 4)
5500 void __thiscall basic_ostream_char__Osfx(basic_ostream_char *this)
5502 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5504 TRACE("(%p)\n", this);
5506 if(base->base.fmtfl & FMTFLAG_unitbuf)
5507 basic_ostream_char_flush(this);
5510 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
5511 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
5512 DEFINE_THISCALL_WRAPPER(basic_ostream_char_osfx, 4)
5513 void __thiscall basic_ostream_char_osfx(basic_ostream_char *this)
5515 TRACE("(%p)\n", this);
5516 basic_ostream_char__Osfx(this);
5519 static BOOL basic_ostream_char_sentry_create(basic_ostream_char *ostr)
5521 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5523 if(basic_ios_char_rdbuf_get(base))
5524 basic_streambuf_char__Lock(base->strbuf);
5526 if(ios_base_good(&base->base) && base->stream)
5527 basic_ostream_char_flush(base->stream);
5529 return ios_base_good(&base->base);
5532 static void basic_ostream_char_sentry_destroy(basic_ostream_char *ostr)
5534 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5536 if(ios_base_good(&base->base) && !__uncaught_exception())
5537 basic_ostream_char_osfx(ostr);
5539 if(basic_ios_char_rdbuf_get(base))
5540 basic_streambuf_char__Unlock(base->strbuf);
5543 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE_NXZ */
5544 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA_NXZ */
5545 DEFINE_THISCALL_WRAPPER(basic_ostream_char_opfx, 4)
5546 MSVCP_bool __thiscall basic_ostream_char_opfx(basic_ostream_char *this)
5548 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5550 TRACE("(%p)\n", this);
5552 if(ios_base_good(&base->base) && base->stream)
5553 basic_ostream_char_flush(base->stream);
5554 return ios_base_good(&base->base);
5557 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
5558 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
5559 DEFINE_THISCALL_WRAPPER(basic_ostream_char_put, 8)
5560 basic_ostream_char* __thiscall basic_ostream_char_put(basic_ostream_char *this, char ch)
5562 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5564 TRACE("(%p %c)\n", this, ch);
5566 if(!basic_ostream_char_sentry_create(this)
5567 || basic_streambuf_char_sputc(base->strbuf, ch)==EOF) {
5568 basic_ostream_char_sentry_destroy(this);
5569 basic_ios_char_setstate(base, IOSTATE_badbit);
5570 return this;
5573 basic_ostream_char_sentry_destroy(this);
5574 return this;
5577 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
5578 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
5579 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 12)
5580 basic_ostream_char* __thiscall basic_ostream_char_seekp(basic_ostream_char *this, streamoff off, int way)
5582 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5584 TRACE("(%p %ld %d)\n", this, off, way);
5586 if(!ios_base_fail(&base->base)) {
5587 fpos_int seek;
5589 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
5590 &seek, off, way, OPENMODE_out);
5591 if(seek.off==-1 && seek.pos==0 && seek.state==0)
5592 basic_ios_char_setstate(base, IOSTATE_failbit);
5594 return this;
5597 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
5598 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
5599 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp_fpos, 28)
5600 basic_ostream_char* __thiscall basic_ostream_char_seekp_fpos(basic_ostream_char *this, fpos_int pos)
5602 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5604 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
5606 if(!ios_base_fail(&base->base)) {
5607 fpos_int seek;
5609 basic_streambuf_char_pubseekpos(basic_ios_char_rdbuf_get(base),
5610 &seek, pos, OPENMODE_out);
5611 if(seek.off==-1 && seek.pos==0 && seek.state==0)
5612 basic_ios_char_setstate(base, IOSTATE_failbit);
5614 return this;
5617 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
5618 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
5619 DEFINE_THISCALL_WRAPPER(basic_ostream_char_tellp, 8)
5620 fpos_int* __thiscall basic_ostream_char_tellp(basic_ostream_char *this, fpos_int *ret)
5622 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5624 TRACE("(%p)\n", this);
5626 if(!ios_base_fail(&base->base)) {
5627 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
5628 ret, 0, SEEKDIR_cur, OPENMODE_out);
5629 }else {
5630 ret->off = -1;
5631 ret->pos = 0;
5632 ret->state = 0;
5634 return ret;
5637 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@PBDH@Z */
5638 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEBD_J@Z */
5639 DEFINE_THISCALL_WRAPPER(basic_ostream_char_write, 12)
5640 basic_ostream_char* __thiscall basic_ostream_char_write(basic_ostream_char *this, const char *str, streamsize count)
5642 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5644 TRACE("(%p %s %ld)\n", this, debugstr_a(str), count);
5646 if(!basic_ostream_char_sentry_create(this)
5647 || basic_streambuf_char_sputn(base->strbuf, str, count)!=count) {
5648 basic_ostream_char_sentry_destroy(this);
5649 basic_ios_char_setstate(base, IOSTATE_badbit);
5650 return this;
5653 basic_ostream_char_sentry_destroy(this);
5654 return this;
5657 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@F@Z */
5658 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@F@Z */
5659 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_short, 8)
5660 basic_ostream_char* __thiscall basic_ostream_char_print_short(basic_ostream_char *this, short val)
5662 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5663 int state = IOSTATE_goodbit;
5665 TRACE("(%p %d)\n", this, val);
5667 if(basic_ostream_char_sentry_create(this)) {
5668 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5669 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5670 ostreambuf_iterator_char dest = {0, strbuf};
5672 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base),
5673 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
5674 ? (LONG)((unsigned short)val) : (LONG)val);
5676 basic_ostream_char_sentry_destroy(this);
5678 basic_ios_char_setstate(base, state);
5679 return this;
5682 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@G@Z */
5683 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@G@Z */
5684 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ushort, 8)
5685 basic_ostream_char* __thiscall basic_ostream_char_print_ushort(basic_ostream_char *this, unsigned short val)
5687 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5688 int state = IOSTATE_goodbit;
5690 TRACE("(%p %u)\n", this, val);
5692 if(basic_ostream_char_sentry_create(this)) {
5693 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5694 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5695 ostreambuf_iterator_char dest = {0, strbuf};
5697 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5699 basic_ostream_char_sentry_destroy(this);
5701 basic_ios_char_setstate(base, state);
5702 return this;
5705 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z */
5706 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z */
5707 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@J@Z */
5708 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@J@Z */
5709 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int, 8)
5710 basic_ostream_char* __thiscall basic_ostream_char_print_int(basic_ostream_char *this, int val)
5712 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5713 int state = IOSTATE_goodbit;
5715 TRACE("(%p %d)\n", this, val);
5717 if(basic_ostream_char_sentry_create(this)) {
5718 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5719 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5720 ostreambuf_iterator_char dest = {0, strbuf};
5722 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5724 basic_ostream_char_sentry_destroy(this);
5726 basic_ios_char_setstate(base, state);
5727 return this;
5730 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@I@Z */
5731 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@I@Z */
5732 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@K@Z */
5733 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z */
5734 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint, 8)
5735 basic_ostream_char* __thiscall basic_ostream_char_print_uint(basic_ostream_char *this, unsigned int val)
5737 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5738 int state = IOSTATE_goodbit;
5740 TRACE("(%p %u)\n", this, val);
5742 if(basic_ostream_char_sentry_create(this)) {
5743 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5744 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5745 ostreambuf_iterator_char dest = {0, strbuf};
5747 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5749 basic_ostream_char_sentry_destroy(this);
5751 basic_ios_char_setstate(base, state);
5752 return this;
5755 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@M@Z */
5756 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@M@Z */
5757 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_float, 8)
5758 basic_ostream_char* __thiscall basic_ostream_char_print_float(basic_ostream_char *this, float val)
5760 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5761 int state = IOSTATE_goodbit;
5763 TRACE("(%p %f)\n", this, val);
5765 if(basic_ostream_char_sentry_create(this)) {
5766 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5767 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5768 ostreambuf_iterator_char dest = {0, strbuf};
5770 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5772 basic_ostream_char_sentry_destroy(this);
5774 basic_ios_char_setstate(base, state);
5775 return this;
5778 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@N@Z */
5779 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@N@Z */
5780 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_double, 12)
5781 basic_ostream_char* __thiscall basic_ostream_char_print_double(basic_ostream_char *this, double val)
5783 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5784 int state = IOSTATE_goodbit;
5786 TRACE("(%p %lf)\n", this, val);
5788 if(basic_ostream_char_sentry_create(this)) {
5789 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5790 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5791 ostreambuf_iterator_char dest = {0, strbuf};
5793 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5795 basic_ostream_char_sentry_destroy(this);
5797 basic_ios_char_setstate(base, state);
5798 return this;
5801 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@O@Z */
5802 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@O@Z */
5803 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ldouble, 12)
5804 basic_ostream_char* __thiscall basic_ostream_char_print_ldouble(basic_ostream_char *this, double val)
5806 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5807 int state = IOSTATE_goodbit;
5809 TRACE("(%p %lf)\n", this, val);
5811 if(basic_ostream_char_sentry_create(this)) {
5812 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5813 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5814 ostreambuf_iterator_char dest = {0, strbuf};
5816 num_put_char_put_ldouble(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5818 basic_ostream_char_sentry_destroy(this);
5820 basic_ios_char_setstate(base, state);
5821 return this;
5824 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
5825 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
5826 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_streambuf, 8)
5827 basic_ostream_char* __thiscall basic_ostream_char_print_streambuf(basic_ostream_char *this, basic_streambuf_char *val)
5829 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5830 IOSB_iostate state = IOSTATE_badbit;
5831 int c = '\n';
5833 TRACE("(%p %p)\n", this, val);
5835 if(basic_ostream_char_sentry_create(this)) {
5836 for(c = basic_streambuf_char_sgetc(val); c!=EOF;
5837 c = basic_streambuf_char_snextc(val)) {
5838 state = IOSTATE_goodbit;
5840 if(basic_streambuf_char_sputc(base->strbuf, c) == EOF) {
5841 state = IOSTATE_badbit;
5842 break;
5845 }else {
5846 state = IOSTATE_badbit;
5848 basic_ostream_char_sentry_destroy(this);
5850 ios_base_width_set(&base->base, 0);
5851 basic_ios_char_setstate(base, state);
5852 return this;
5855 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PBX@Z */
5856 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEBX@Z */
5857 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ptr, 8)
5858 basic_ostream_char* __thiscall basic_ostream_char_print_ptr(basic_ostream_char *this, const void *val)
5860 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5861 int state = IOSTATE_goodbit;
5863 TRACE("(%p %p)\n", this, val);
5865 if(basic_ostream_char_sentry_create(this)) {
5866 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5867 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5868 ostreambuf_iterator_char dest = {0, strbuf};
5870 num_put_char_put_ptr(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5872 basic_ostream_char_sentry_destroy(this);
5874 basic_ios_char_setstate(base, state);
5875 return this;
5878 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_J@Z */
5879 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_J@Z */
5880 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int64, 12)
5881 basic_ostream_char* __thiscall basic_ostream_char_print_int64(basic_ostream_char *this, __int64 val)
5883 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5884 int state = IOSTATE_goodbit;
5886 TRACE("(%p)\n", this);
5888 if(basic_ostream_char_sentry_create(this)) {
5889 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5890 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5891 ostreambuf_iterator_char dest = {0, strbuf};
5893 num_put_char_put_int64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5895 basic_ostream_char_sentry_destroy(this);
5897 basic_ios_char_setstate(base, state);
5898 return this;
5901 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_K@Z */
5902 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z */
5903 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint64, 12)
5904 basic_ostream_char* __thiscall basic_ostream_char_print_uint64(basic_ostream_char *this, unsigned __int64 val)
5906 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5907 int state = IOSTATE_goodbit;
5909 TRACE("(%p)\n", this);
5911 if(basic_ostream_char_sentry_create(this)) {
5912 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5913 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5914 ostreambuf_iterator_char dest = {0, strbuf};
5916 num_put_char_put_uint64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5918 basic_ostream_char_sentry_destroy(this);
5920 basic_ios_char_setstate(base, state);
5921 return this;
5924 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_N@Z */
5925 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_N@Z */
5926 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_bool, 8)
5927 basic_ostream_char* __thiscall basic_ostream_char_print_bool(basic_ostream_char *this, MSVCP_bool val)
5929 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5930 int state = IOSTATE_goodbit;
5932 TRACE("(%p %x)\n", this, val);
5934 if(basic_ostream_char_sentry_create(this)) {
5935 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5936 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5937 ostreambuf_iterator_char dest = {0, strbuf};
5939 num_put_char_put_bool(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5941 basic_ostream_char_sentry_destroy(this);
5943 basic_ios_char_setstate(base, state);
5944 return this;
5947 /* ?ends@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
5948 /* ?ends@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
5949 basic_ostream_char* __cdecl basic_ostream_char_ends(basic_ostream_char *ostr)
5951 TRACE("(%p)\n", ostr);
5953 basic_ostream_char_put(ostr, 0);
5954 return ostr;
5957 /* ?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
5958 /* ?endl@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
5959 basic_ostream_char* __cdecl basic_ostream_char_endl(basic_ostream_char *ostr)
5961 TRACE("(%p)\n", ostr);
5963 basic_ostream_char_put(ostr, '\n');
5964 basic_ostream_char_flush(ostr);
5965 return ostr;
5968 /* $?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 */
5969 /* ??$?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 */
5970 basic_ostream_char* __cdecl basic_ostream_char_print_bstr(basic_ostream_char *ostr, const basic_string_char *str)
5972 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5973 IOSB_iostate state = IOSTATE_goodbit;
5975 TRACE("(%p %p)\n", ostr, str);
5977 if(basic_ostream_char_sentry_create(ostr)) {
5978 MSVCP_size_t len = MSVCP_basic_string_char_length(str);
5979 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
5981 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
5982 for(; pad!=0; pad--) {
5983 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5984 state = IOSTATE_badbit;
5985 break;
5990 if(state == IOSTATE_goodbit) {
5991 if(basic_streambuf_char_sputn(base->strbuf, MSVCP_basic_string_char_c_str(str), len) != len)
5992 state = IOSTATE_badbit;
5995 if(state == IOSTATE_goodbit) {
5996 for(; pad!=0; pad--) {
5997 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5998 state = IOSTATE_badbit;
5999 break;
6004 base->base.wide = 0;
6005 }else {
6006 state = IOSTATE_badbit;
6008 basic_ostream_char_sentry_destroy(ostr);
6010 basic_ios_char_setstate(base, state);
6011 return ostr;
6014 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@C@Z */
6015 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@C@Z */
6016 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z */
6017 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z */
6018 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@E@Z */
6019 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@E@Z */
6020 basic_ostream_char* __cdecl basic_ostream_char_print_ch(basic_ostream_char *ostr, char ch)
6022 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6023 IOSB_iostate state = IOSTATE_goodbit;
6025 TRACE("(%p %d)\n", ostr, ch);
6027 if(basic_ostream_char_sentry_create(ostr)) {
6028 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
6030 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6031 for(; pad!=0; pad--) {
6032 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6033 state = IOSTATE_badbit;
6034 break;
6039 if(state == IOSTATE_goodbit) {
6040 if(basic_streambuf_char_sputc(base->strbuf, ch) == EOF)
6041 state = IOSTATE_badbit;
6044 if(state == IOSTATE_goodbit) {
6045 for(; pad!=0; pad--) {
6046 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6047 state = IOSTATE_badbit;
6048 break;
6053 base->base.wide = 0;
6054 }else {
6055 state = IOSTATE_badbit;
6057 basic_ostream_char_sentry_destroy(ostr);
6059 basic_ios_char_setstate(base, state);
6060 return ostr;
6063 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBC@Z */
6064 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBC@Z */
6065 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z */
6066 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z */
6067 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBE@Z */
6068 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBE@Z */
6069 basic_ostream_char* __cdecl basic_ostream_char_print_str(basic_ostream_char *ostr, const char *str)
6071 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6072 IOSB_iostate state = IOSTATE_goodbit;
6074 TRACE("(%p %s)\n", ostr, str);
6076 if(basic_ostream_char_sentry_create(ostr)) {
6077 MSVCP_size_t len = strlen(str);
6078 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
6080 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6081 for(; pad!=0; pad--) {
6082 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6083 state = IOSTATE_badbit;
6084 break;
6089 if(state == IOSTATE_goodbit) {
6090 if(basic_streambuf_char_sputn(base->strbuf, str, len) != len)
6091 state = IOSTATE_badbit;
6094 if(state == IOSTATE_goodbit) {
6095 for(; pad!=0; pad--) {
6096 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6097 state = IOSTATE_badbit;
6098 break;
6103 base->base.wide = 0;
6104 }else {
6105 state = IOSTATE_badbit;
6107 basic_ostream_char_sentry_destroy(ostr);
6109 basic_ios_char_setstate(base, state);
6110 return ostr;
6113 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
6114 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
6115 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func, 8)
6116 basic_ostream_char* __thiscall basic_ostream_char_print_func(basic_ostream_char *this,
6117 basic_ostream_char* (__cdecl *pfunc)(basic_ostream_char*))
6119 TRACE("(%p %p)\n", this, pfunc);
6120 pfunc(this);
6121 return this;
6124 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
6125 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
6126 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_basic_ios, 8)
6127 basic_ostream_char* __thiscall basic_ostream_char_print_func_basic_ios(basic_ostream_char *this,
6128 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
6130 TRACE("(%p %p)\n", this, pfunc);
6131 pfunc(basic_ostream_char_get_basic_ios(this));
6132 return this;
6135 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
6136 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
6137 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_ios_base, 8)
6138 basic_ostream_char* __thiscall basic_ostream_char_print_func_ios_base(
6139 basic_ostream_char *this, ios_base* (__cdecl *pfunc)(ios_base*))
6141 TRACE("(%p %p)\n", this, pfunc);
6142 pfunc(&basic_ostream_char_get_basic_ios(this)->base);
6143 return this;
6146 /* Caution: basic_ostream uses virtual inheritance. */
6147 static inline basic_ios_wchar* basic_ostream_wchar_get_basic_ios(basic_ostream_wchar *this)
6149 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
6152 static inline basic_ios_wchar* basic_ostream_wchar_to_basic_ios(basic_ostream_wchar *ptr)
6154 return (basic_ios_wchar*)((char*)ptr+basic_ostream_wchar_vbtable[1]);
6157 static inline basic_ostream_wchar* basic_ostream_wchar_from_basic_ios(basic_ios_wchar *ptr)
6159 return (basic_ostream_wchar*)((char*)ptr-basic_ostream_wchar_vbtable[1]);
6162 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
6163 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
6164 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_ctor, 16)
6165 basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor(basic_ostream_wchar *this,
6166 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
6168 basic_ios_wchar *base;
6170 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
6172 if(virt_init) {
6173 this->vbtable = basic_ostream_wchar_vbtable;
6174 base = basic_ostream_wchar_get_basic_ios(this);
6175 basic_ios_wchar_ctor(base);
6176 }else {
6177 base = basic_ostream_wchar_get_basic_ios(this);
6180 base->base.vtable = &MSVCP_basic_ostream_wchar_vtable;
6181 basic_ios_wchar_init(base, strbuf, isstd);
6182 return this;
6185 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
6186 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
6187 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor, 16)
6188 basic_ostream_wchar* __thiscall basic_ostream_short_ctor(basic_ostream_wchar *this,
6189 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
6191 basic_ostream_wchar_ctor(this, strbuf, isstd, virt_init);
6192 basic_ostream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_ostream_short_vtable;
6193 return this;
6196 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
6197 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
6198 static basic_ostream_wchar* basic_ostream_wchar_ctor_uninitialized(basic_ostream_wchar *this,
6199 int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init)
6201 basic_ios_wchar *base;
6203 TRACE("(%p %d %x)\n", this, uninitialized, addstd);
6205 if(virt_init) {
6206 this->vbtable = basic_ostream_wchar_vbtable;
6207 base = basic_ostream_wchar_get_basic_ios(this);
6208 basic_ios_wchar_ctor(base);
6209 }else {
6210 base = basic_ostream_wchar_get_basic_ios(this);
6213 base->base.vtable = &MSVCP_basic_ostream_wchar_vtable;
6214 if(addstd)
6215 ios_base_Addstd(&base->base);
6216 return this;
6219 /* ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
6220 /* ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
6221 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
6222 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
6223 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_dtor, 4)
6224 void __thiscall basic_ostream_wchar_dtor(basic_ios_wchar *base)
6226 basic_ostream_wchar *this = basic_ostream_wchar_from_basic_ios(base);
6228 /* don't destroy virtual base here */
6229 TRACE("(%p)\n", this);
6232 /* ??_D?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
6233 /* ??_D?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
6234 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
6235 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
6236 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_vbase_dtor, 4)
6237 void __thiscall basic_ostream_wchar_vbase_dtor(basic_ostream_wchar *this)
6239 TRACE("(%p)\n", this);
6240 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(this));
6241 basic_ios_wchar_dtor(basic_ostream_wchar_get_basic_ios(this));
6244 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_vector_dtor, 8)
6245 basic_ostream_wchar* __thiscall basic_ostream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
6247 basic_ostream_wchar *this = basic_ostream_wchar_from_basic_ios(base);
6249 TRACE("(%p %x)\n", this, flags);
6251 if(flags & 2) {
6252 /* we have an array, with the number of elements stored before the first object */
6253 INT_PTR i, *ptr = (INT_PTR *)this-1;
6255 for(i=*ptr-1; i>=0; i--)
6256 basic_ostream_wchar_vbase_dtor(this+i);
6257 MSVCRT_operator_delete(ptr);
6258 } else {
6259 basic_ostream_wchar_vbase_dtor(this);
6260 if(flags & 1)
6261 MSVCRT_operator_delete(this);
6264 return this;
6267 /* ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */
6268 /* ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */
6269 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
6270 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
6271 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_flush, 4)
6272 basic_ostream_wchar* __thiscall basic_ostream_wchar_flush(basic_ostream_wchar *this)
6274 /* this function is not matching C++ specification */
6275 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6277 TRACE("(%p)\n", this);
6279 if(basic_ios_wchar_rdbuf_get(base) && ios_base_good(&base->base)
6280 && basic_streambuf_wchar_pubsync(basic_ios_wchar_rdbuf_get(base))==-1)
6281 basic_ios_wchar_setstate(base, IOSTATE_badbit);
6282 return this;
6285 /* ?flush@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
6286 /* ?flush@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
6287 /* ?flush@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
6288 /* ?flush@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
6289 basic_ostream_wchar* __cdecl flush_ostream_wchar(basic_ostream_wchar *ostream)
6291 return basic_ostream_wchar_flush(ostream);
6294 /* ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
6295 /* ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
6296 /* ?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
6297 /* ?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
6298 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar__Osfx, 4)
6299 void __thiscall basic_ostream_wchar__Osfx(basic_ostream_wchar *this)
6301 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6303 TRACE("(%p)\n", this);
6305 if(base->base.fmtfl & FMTFLAG_unitbuf)
6306 basic_ostream_wchar_flush(this);
6309 /* ?osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
6310 /* ?osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
6311 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
6312 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
6313 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_osfx, 4)
6314 void __thiscall basic_ostream_wchar_osfx(basic_ostream_wchar *this)
6316 TRACE("(%p)\n", this);
6317 basic_ostream_wchar__Osfx(this);
6320 static BOOL basic_ostream_wchar_sentry_create(basic_ostream_wchar *ostr)
6322 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
6324 if(basic_ios_wchar_rdbuf_get(base))
6325 basic_streambuf_wchar__Lock(base->strbuf);
6327 if(ios_base_good(&base->base) && base->stream)
6328 basic_ostream_wchar_flush(base->stream);
6330 return ios_base_good(&base->base);
6333 static void basic_ostream_wchar_sentry_destroy(basic_ostream_wchar *ostr)
6335 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
6337 if(ios_base_good(&base->base) && !__uncaught_exception())
6338 basic_ostream_wchar_osfx(ostr);
6340 if(basic_ios_wchar_rdbuf_get(base))
6341 basic_streambuf_wchar__Unlock(base->strbuf);
6344 /* ?opfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE_NXZ */
6345 /* ?opfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA_NXZ */
6346 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE_NXZ */
6347 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA_NXZ */
6348 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_opfx, 4)
6349 MSVCP_bool __thiscall basic_ostream_wchar_opfx(basic_ostream_wchar *this)
6351 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6353 TRACE("(%p)\n", this);
6355 if(ios_base_good(&base->base) && base->stream)
6356 basic_ostream_wchar_flush(base->stream);
6357 return ios_base_good(&base->base);
6360 /* ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */
6361 /* ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */
6362 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
6363 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
6364 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_put, 8)
6365 basic_ostream_wchar* __thiscall basic_ostream_wchar_put(basic_ostream_wchar *this, wchar_t ch)
6367 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6369 TRACE("(%p %c)\n", this, ch);
6371 if(!basic_ostream_wchar_sentry_create(this)
6372 || basic_streambuf_wchar_sputc(base->strbuf, ch)==WEOF) {
6373 basic_ostream_wchar_sentry_destroy(this);
6374 basic_ios_wchar_setstate(base, IOSTATE_badbit);
6375 return this;
6378 basic_ostream_wchar_sentry_destroy(this);
6379 return this;
6382 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */
6383 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */
6384 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
6385 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
6386 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp, 12)
6387 basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp(basic_ostream_wchar *this, streamoff off, int way)
6389 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6391 TRACE("(%p %ld %d)\n", this, off, way);
6393 if(!ios_base_fail(&base->base)) {
6394 fpos_int seek;
6396 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
6397 &seek, off, way, OPENMODE_out);
6398 if(seek.off==-1 && seek.pos==0 && seek.state==0)
6399 basic_ios_wchar_setstate(base, IOSTATE_failbit);
6401 return this;
6404 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
6405 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
6406 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
6407 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
6408 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp_fpos, 28)
6409 basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp_fpos(basic_ostream_wchar *this, fpos_int pos)
6411 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6413 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
6415 if(!ios_base_fail(&base->base)) {
6416 fpos_int seek;
6418 basic_streambuf_wchar_pubseekpos(basic_ios_wchar_rdbuf_get(base),
6419 &seek, pos, OPENMODE_out);
6420 if(seek.off==-1 && seek.pos==0 && seek.state==0)
6421 basic_ios_wchar_setstate(base, IOSTATE_failbit);
6423 return this;
6426 /* ?tellp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */
6427 /* ?tellp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
6428 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
6429 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
6430 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_tellp, 8)
6431 fpos_int* __thiscall basic_ostream_wchar_tellp(basic_ostream_wchar *this, fpos_int *ret)
6433 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6435 TRACE("(%p)\n", this);
6437 if(!ios_base_fail(&base->base)) {
6438 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
6439 ret, 0, SEEKDIR_cur, OPENMODE_out);
6440 }else {
6441 ret->off = -1;
6442 ret->pos = 0;
6443 ret->state = 0;
6445 return ret;
6448 /* ?write@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PB_WH@Z */
6449 /* ?write@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEB_W_J@Z */
6450 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@PBGH@Z */
6451 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEBG_J@Z */
6452 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_write, 12)
6453 basic_ostream_wchar* __thiscall basic_ostream_wchar_write(basic_ostream_wchar *this, const wchar_t *str, streamsize count)
6455 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6457 TRACE("(%p %s %ld)\n", this, debugstr_w(str), count);
6459 if(!basic_ostream_wchar_sentry_create(this)
6460 || basic_streambuf_wchar_sputn(base->strbuf, str, count)!=count) {
6461 basic_ostream_wchar_sentry_destroy(this);
6462 basic_ios_wchar_setstate(base, IOSTATE_badbit);
6463 return this;
6466 basic_ostream_wchar_sentry_destroy(this);
6467 return this;
6470 static basic_ostream_wchar* basic_ostream_print_short(basic_ostream_wchar *this, short val, const num_put *numput)
6472 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6473 int state = IOSTATE_goodbit;
6475 TRACE("(%p %d)\n", this, val);
6477 if(basic_ostream_wchar_sentry_create(this)) {
6478 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6479 ostreambuf_iterator_wchar dest = {0, strbuf};
6481 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base),
6482 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
6483 ? (LONG)((unsigned short)val) : (LONG)val);
6485 basic_ostream_wchar_sentry_destroy(this);
6487 basic_ios_wchar_setstate(base, state);
6488 return this;
6491 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@F@Z */
6492 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@F@Z */
6493 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_short, 8)
6494 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_short(basic_ostream_wchar *this, short val)
6496 return basic_ostream_print_short(this, val, num_put_wchar_use_facet(
6497 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6500 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@F@Z */
6501 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@F@Z */
6502 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_short, 8)
6503 basic_ostream_wchar* __thiscall basic_ostream_short_print_short(basic_ostream_wchar *this, short val)
6505 return basic_ostream_print_short(this, val, num_put_short_use_facet(
6506 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6509 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@G@Z */
6510 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@G@Z */
6511 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ushort, 8)
6512 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ushort(basic_ostream_wchar *this, unsigned short val)
6514 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6515 int state = IOSTATE_goodbit;
6517 TRACE("(%p %u)\n", this, val);
6519 if(basic_ostream_wchar_sentry_create(this)) {
6520 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6521 const num_put *numput = num_put_wchar_use_facet(strbuf->loc);
6522 ostreambuf_iterator_wchar dest = {0, strbuf};
6524 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6526 basic_ostream_wchar_sentry_destroy(this);
6528 basic_ios_wchar_setstate(base, state);
6529 return this;
6532 static basic_ostream_wchar* basic_ostream_print_int(basic_ostream_wchar *this, int val, const num_put *numput)
6534 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6535 int state = IOSTATE_goodbit;
6537 TRACE("(%p %d)\n", this, val);
6539 if(basic_ostream_wchar_sentry_create(this)) {
6540 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6541 ostreambuf_iterator_wchar dest = {0, strbuf};
6543 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6545 basic_ostream_wchar_sentry_destroy(this);
6547 basic_ios_wchar_setstate(base, state);
6548 return this;
6551 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@H@Z */
6552 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@H@Z */
6553 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@J@Z */
6554 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@J@Z */
6555 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int, 8)
6556 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int(basic_ostream_wchar *this, int val)
6558 return basic_ostream_print_int(this, val, num_put_wchar_use_facet(
6559 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6562 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@H@Z */
6563 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@H@Z */
6564 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@J@Z */
6565 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@J@Z */
6566 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int, 8)
6567 basic_ostream_wchar* __thiscall basic_ostream_short_print_int(basic_ostream_wchar *this, int val)
6569 return basic_ostream_print_int(this, val, num_put_short_use_facet(
6570 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6573 static basic_ostream_wchar* basic_ostream_print_uint(basic_ostream_wchar *this, unsigned int val, const num_put *numput)
6575 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6576 int state = IOSTATE_goodbit;
6578 TRACE("(%p %u)\n", this, val);
6580 if(basic_ostream_wchar_sentry_create(this)) {
6581 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6582 ostreambuf_iterator_wchar dest = {0, strbuf};
6584 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6586 basic_ostream_wchar_sentry_destroy(this);
6588 basic_ios_wchar_setstate(base, state);
6589 return this;
6592 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@I@Z */
6593 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@I@Z */
6594 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@K@Z */
6595 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@K@Z */
6596 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint, 8)
6597 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint(basic_ostream_wchar *this, unsigned int val)
6599 return basic_ostream_print_uint(this, val, num_put_wchar_use_facet(
6600 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6603 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@I@Z */
6604 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@I@Z */
6605 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@K@Z */
6606 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@K@Z */
6607 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint, 8)
6608 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint(basic_ostream_wchar *this, unsigned int val)
6610 return basic_ostream_print_uint(this, val, num_put_short_use_facet(
6611 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6614 static basic_ostream_wchar* basic_ostream_print_float(basic_ostream_wchar *this, float val, const num_put *numput)
6616 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6617 int state = IOSTATE_goodbit;
6619 TRACE("(%p %f)\n", this, val);
6621 if(basic_ostream_wchar_sentry_create(this)) {
6622 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6623 ostreambuf_iterator_wchar dest = {0, strbuf};
6625 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6627 basic_ostream_wchar_sentry_destroy(this);
6629 basic_ios_wchar_setstate(base, state);
6630 return this;
6633 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@M@Z */
6634 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@M@Z */
6635 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_float, 8)
6636 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_float(basic_ostream_wchar *this, float val)
6638 return basic_ostream_print_float(this, val, num_put_wchar_use_facet(
6639 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6642 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@M@Z */
6643 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@M@Z */
6644 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_float, 8)
6645 basic_ostream_wchar* __thiscall basic_ostream_short_print_float(basic_ostream_wchar *this, float val)
6647 return basic_ostream_print_float(this, val, num_put_short_use_facet(
6648 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6651 static basic_ostream_wchar* basic_ostream_print_double(basic_ostream_wchar *this, double val, const num_put *numput)
6653 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6654 int state = IOSTATE_goodbit;
6656 TRACE("(%p %lf)\n", this, val);
6658 if(basic_ostream_wchar_sentry_create(this)) {
6659 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6660 ostreambuf_iterator_wchar dest = {0, strbuf};
6662 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6664 basic_ostream_wchar_sentry_destroy(this);
6666 basic_ios_wchar_setstate(base, state);
6667 return this;
6670 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@N@Z */
6671 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@N@Z */
6672 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_double, 12)
6673 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_double(basic_ostream_wchar *this, double val)
6675 return basic_ostream_print_double(this, val, num_put_wchar_use_facet(
6676 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6679 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@N@Z */
6680 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@N@Z */
6681 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_double, 12)
6682 basic_ostream_wchar* __thiscall basic_ostream_short_print_double(basic_ostream_wchar *this, double val)
6684 return basic_ostream_print_double(this, val, num_put_short_use_facet(
6685 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6688 static basic_ostream_wchar* basic_ostream_print_ldouble(basic_ostream_wchar *this, double val, const num_put *numput)
6690 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6691 int state = IOSTATE_goodbit;
6693 TRACE("(%p %lf)\n", this, val);
6695 if(basic_ostream_wchar_sentry_create(this)) {
6696 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6697 ostreambuf_iterator_wchar dest = {0, strbuf};
6699 num_put_wchar_put_ldouble(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6701 basic_ostream_wchar_sentry_destroy(this);
6703 basic_ios_wchar_setstate(base, state);
6704 return this;
6707 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@O@Z */
6708 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@O@Z */
6709 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ldouble, 12)
6710 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ldouble(basic_ostream_wchar *this, double val)
6712 return basic_ostream_print_ldouble(this, val, num_put_wchar_use_facet(
6713 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6716 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@O@Z */
6717 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@O@Z */
6718 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ldouble, 12)
6719 basic_ostream_wchar* __thiscall basic_ostream_short_print_ldouble(basic_ostream_wchar *this, double val)
6721 return basic_ostream_print_ldouble(this, val, num_put_short_use_facet(
6722 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6725 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
6726 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
6727 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
6728 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
6729 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_streambuf, 8)
6730 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_streambuf(basic_ostream_wchar *this, basic_streambuf_wchar *val)
6732 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6733 IOSB_iostate state = IOSTATE_badbit;
6734 unsigned short c = '\n';
6736 TRACE("(%p %p)\n", this, val);
6738 if(basic_ostream_wchar_sentry_create(this)) {
6739 for(c = basic_streambuf_wchar_sgetc(val); c!=WEOF;
6740 c = basic_streambuf_wchar_snextc(val)) {
6741 state = IOSTATE_goodbit;
6743 if(basic_streambuf_wchar_sputc(base->strbuf, c) == WEOF) {
6744 state = IOSTATE_badbit;
6745 break;
6748 }else {
6749 state = IOSTATE_badbit;
6751 basic_ostream_wchar_sentry_destroy(this);
6753 ios_base_width_set(&base->base, 0);
6754 basic_ios_wchar_setstate(base, state);
6755 return this;
6758 static basic_ostream_wchar* basic_ostream_print_ptr(basic_ostream_wchar *this, const void *val, const num_put *numput)
6760 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6761 int state = IOSTATE_goodbit;
6763 TRACE("(%p %p)\n", this, val);
6765 if(basic_ostream_wchar_sentry_create(this)) {
6766 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6767 ostreambuf_iterator_wchar dest = {0, strbuf};
6769 num_put_wchar_put_ptr(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6771 basic_ostream_wchar_sentry_destroy(this);
6773 basic_ios_wchar_setstate(base, state);
6774 return this;
6777 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PBX@Z */
6778 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEBX@Z */
6779 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ptr, 8)
6780 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ptr(basic_ostream_wchar *this, const void *val)
6782 return basic_ostream_print_ptr(this, val, num_put_wchar_use_facet(
6783 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6786 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PBX@Z */
6787 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEBX@Z */
6788 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ptr, 8)
6789 basic_ostream_wchar* __thiscall basic_ostream_short_print_ptr(basic_ostream_wchar *this, const void *val)
6791 return basic_ostream_print_ptr(this, val, num_put_short_use_facet(
6792 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6795 static basic_ostream_wchar* basic_ostream_print_int64(basic_ostream_wchar *this, __int64 val, const num_put *numput)
6797 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6798 int state = IOSTATE_goodbit;
6800 TRACE("(%p)\n", this);
6802 if(basic_ostream_wchar_sentry_create(this)) {
6803 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6804 ostreambuf_iterator_wchar dest = {0, strbuf};
6806 num_put_wchar_put_int64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6808 basic_ostream_wchar_sentry_destroy(this);
6810 basic_ios_wchar_setstate(base, state);
6811 return this;
6814 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_J@Z */
6815 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_J@Z */
6816 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int64, 12)
6817 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int64(basic_ostream_wchar *this, __int64 val)
6819 return basic_ostream_print_int64(this, val, num_put_wchar_use_facet(
6820 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6823 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_J@Z */
6824 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_J@Z */
6825 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int64, 12)
6826 basic_ostream_wchar* __thiscall basic_ostream_short_print_int64(basic_ostream_wchar *this, __int64 val)
6828 return basic_ostream_print_int64(this, val, num_put_short_use_facet(
6829 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6832 static basic_ostream_wchar* basic_ostream_print_uint64(basic_ostream_wchar *this, unsigned __int64 val, const num_put *numput)
6834 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6835 int state = IOSTATE_goodbit;
6837 TRACE("(%p)\n", this);
6839 if(basic_ostream_wchar_sentry_create(this)) {
6840 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6841 ostreambuf_iterator_wchar dest = {0, strbuf};
6843 num_put_wchar_put_uint64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6845 basic_ostream_wchar_sentry_destroy(this);
6847 basic_ios_wchar_setstate(base, state);
6848 return this;
6851 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_K@Z */
6852 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_K@Z */
6853 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint64, 12)
6854 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
6856 return basic_ostream_print_uint64(this, val, num_put_wchar_use_facet(
6857 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6860 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_K@Z */
6861 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_K@Z */
6862 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint64, 12)
6863 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
6865 return basic_ostream_print_uint64(this, val, num_put_short_use_facet(
6866 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6869 static basic_ostream_wchar* basic_ostream_print_bool(basic_ostream_wchar *this, MSVCP_bool val, const num_put *numput)
6871 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6872 int state = IOSTATE_goodbit;
6874 TRACE("(%p %x)\n", this, val);
6876 if(basic_ostream_wchar_sentry_create(this)) {
6877 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6878 ostreambuf_iterator_wchar dest = {0, strbuf};
6880 num_put_wchar_put_bool(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6882 basic_ostream_wchar_sentry_destroy(this);
6884 basic_ios_wchar_setstate(base, state);
6885 return this;
6888 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_N@Z */
6889 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_N@Z */
6890 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_bool, 8)
6891 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_bool(basic_ostream_wchar *this, MSVCP_bool val)
6893 return basic_ostream_print_bool(this, val, num_put_wchar_use_facet(
6894 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6897 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_N@Z */
6898 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_N@Z */
6899 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_bool, 8)
6900 basic_ostream_wchar* __thiscall basic_ostream_short_print_bool(basic_ostream_wchar *this, MSVCP_bool val)
6902 return basic_ostream_print_bool(this, val, num_put_short_use_facet(
6903 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6906 /* ?ends@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
6907 /* ?ends@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
6908 /* ?ends@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
6909 /* ?ends@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
6910 basic_ostream_wchar* __cdecl basic_ostream_wchar_ends(basic_ostream_wchar *ostr)
6912 TRACE("(%p)\n", ostr);
6914 basic_ostream_wchar_put(ostr, 0);
6915 return ostr;
6918 /* ?endl@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
6919 /* ?endl@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
6920 /* ?endl@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
6921 /* ?endl@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
6922 basic_ostream_wchar* __cdecl basic_ostream_wchar_endl(basic_ostream_wchar *ostr)
6924 TRACE("(%p)\n", ostr);
6926 basic_ostream_wchar_put(ostr, '\n');
6927 basic_ostream_wchar_flush(ostr);
6928 return ostr;
6931 /* ??$?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 */
6932 /* ??$?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 */
6933 /* ??$?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 */
6934 /* ??$?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 */
6935 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_bstr(basic_ostream_wchar *ostr, const basic_string_wchar *str)
6937 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
6938 IOSB_iostate state = IOSTATE_goodbit;
6940 TRACE("(%p %p)\n", ostr, str);
6942 if(basic_ostream_wchar_sentry_create(ostr)) {
6943 MSVCP_size_t len = MSVCP_basic_string_wchar_length(str);
6944 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
6946 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6947 for(; pad!=0; pad--) {
6948 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6949 state = IOSTATE_badbit;
6950 break;
6955 if(state == IOSTATE_goodbit) {
6956 if(basic_streambuf_wchar_sputn(base->strbuf, MSVCP_basic_string_wchar_c_str(str), len) != len)
6957 state = IOSTATE_badbit;
6960 if(state == IOSTATE_goodbit) {
6961 for(; pad!=0; pad--) {
6962 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6963 state = IOSTATE_badbit;
6964 break;
6969 base->base.wide = 0;
6970 }else {
6971 state = IOSTATE_badbit;
6973 basic_ostream_wchar_sentry_destroy(ostr);
6975 basic_ios_wchar_setstate(base, state);
6976 return ostr;
6979 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@_W@Z */
6980 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@_W@Z */
6981 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@G@Z */
6982 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@G@Z */
6983 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_ch(basic_ostream_wchar *ostr, wchar_t ch)
6985 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
6986 IOSB_iostate state = IOSTATE_goodbit;
6988 TRACE("(%p %d)\n", ostr, ch);
6990 if(basic_ostream_wchar_sentry_create(ostr)) {
6991 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
6993 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6994 for(; pad!=0; pad--) {
6995 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6996 state = IOSTATE_badbit;
6997 break;
7002 if(state == IOSTATE_goodbit) {
7003 if(basic_streambuf_wchar_sputc(base->strbuf, ch) == WEOF)
7004 state = IOSTATE_badbit;
7007 if(state == IOSTATE_goodbit) {
7008 for(; pad!=0; pad--) {
7009 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7010 state = IOSTATE_badbit;
7011 break;
7016 base->base.wide = 0;
7017 }else {
7018 state = IOSTATE_badbit;
7020 basic_ostream_wchar_sentry_destroy(ostr);
7022 basic_ios_wchar_setstate(base, state);
7023 return ostr;
7026 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@PB_W@Z */
7027 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@PEB_W@Z */
7028 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@PBG@Z */
7029 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@PEBG@Z */
7030 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_str(basic_ostream_wchar *ostr, const wchar_t *str)
7032 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
7033 IOSB_iostate state = IOSTATE_goodbit;
7035 TRACE("(%p %s)\n", ostr, debugstr_w(str));
7037 if(basic_ostream_wchar_sentry_create(ostr)) {
7038 MSVCP_size_t len = wcslen(str);
7039 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
7041 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
7042 for(; pad!=0; pad--) {
7043 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7044 state = IOSTATE_badbit;
7045 break;
7050 if(state == IOSTATE_goodbit) {
7051 if(basic_streambuf_wchar_sputn(base->strbuf, str, len) != len)
7052 state = IOSTATE_badbit;
7055 if(state == IOSTATE_goodbit) {
7056 for(; pad!=0; pad--) {
7057 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7058 state = IOSTATE_badbit;
7059 break;
7064 base->base.wide = 0;
7065 }else {
7066 state = IOSTATE_badbit;
7068 basic_ostream_wchar_sentry_destroy(ostr);
7070 basic_ios_wchar_setstate(base, state);
7071 return ostr;
7074 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
7075 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
7076 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
7077 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
7078 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func, 8)
7079 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func(basic_ostream_wchar *this,
7080 basic_ostream_wchar* (__cdecl *pfunc)(basic_ostream_wchar*))
7082 TRACE("(%p %p)\n", this, pfunc);
7083 pfunc(this);
7084 return this;
7087 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AAV21@@Z@Z */
7088 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AEAV21@@Z@Z */
7089 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
7090 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
7091 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func_basic_ios, 8)
7092 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func_basic_ios(basic_ostream_wchar *this,
7093 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
7095 TRACE("(%p %p)\n", this, pfunc);
7096 pfunc(basic_ostream_wchar_get_basic_ios(this));
7097 return this;
7100 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
7101 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
7102 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
7103 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
7104 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func_ios_base, 8)
7105 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func_ios_base(
7106 basic_ostream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
7108 TRACE("(%p %p)\n", this, pfunc);
7109 pfunc(&basic_ostream_wchar_get_basic_ios(this)->base);
7110 return this;
7113 /* Caution: basic_istream uses virtual inheritance. */
7114 static inline basic_ios_char* basic_istream_char_get_basic_ios(basic_istream_char *this)
7116 return (basic_ios_char*)((char*)this+this->vbtable[1]);
7119 static inline basic_ios_char* basic_istream_char_to_basic_ios(basic_istream_char *ptr)
7121 return (basic_ios_char*)((char*)ptr+basic_istream_char_vbtable[1]);
7124 static inline basic_istream_char* basic_istream_char_from_basic_ios(basic_ios_char *ptr)
7126 return (basic_istream_char*)((char*)ptr-basic_istream_char_vbtable[1]);
7129 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
7130 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
7131 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_init, 20)
7132 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)
7134 basic_ios_char *base;
7136 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
7138 if(virt_init) {
7139 this->vbtable = basic_istream_char_vbtable;
7140 base = basic_istream_char_get_basic_ios(this);
7141 basic_ios_char_ctor(base);
7142 }else {
7143 base = basic_istream_char_get_basic_ios(this);
7146 base->base.vtable = &MSVCP_basic_istream_char_vtable;
7147 this->count = 0;
7148 if(!noinit)
7149 basic_ios_char_init(base, strbuf, isstd);
7150 return this;
7153 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
7154 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
7155 static basic_istream_char* basic_istream_char_ctor(basic_istream_char *this, basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
7157 return basic_istream_char_ctor_init(this, strbuf, isstd, FALSE, virt_init);
7160 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
7161 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
7162 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_uninitialized, 12)
7163 basic_istream_char* __thiscall basic_istream_char_ctor_uninitialized(basic_istream_char *this, int uninitialized, MSVCP_bool virt_init)
7165 basic_ios_char *base;
7167 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
7169 if(virt_init) {
7170 this->vbtable = basic_istream_char_vbtable;
7171 base = basic_istream_char_get_basic_ios(this);
7172 basic_ios_char_ctor(base);
7173 }else {
7174 base = basic_istream_char_get_basic_ios(this);
7177 base->base.vtable = &MSVCP_basic_istream_char_vtable;
7178 ios_base_Addstd(&base->base);
7179 return this;
7182 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UAE@XZ */
7183 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
7184 DEFINE_THISCALL_WRAPPER(basic_istream_char_dtor, 4)
7185 void __thiscall basic_istream_char_dtor(basic_ios_char *base)
7187 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
7189 /* don't destroy virtual base here */
7190 TRACE("(%p)\n", this);
7193 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
7194 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
7195 DEFINE_THISCALL_WRAPPER(basic_istream_char_vbase_dtor, 4)
7196 void __thiscall basic_istream_char_vbase_dtor(basic_istream_char *this)
7198 TRACE("(%p)\n", this);
7199 basic_istream_char_dtor(basic_istream_char_to_basic_ios(this));
7200 basic_ios_char_dtor(basic_istream_char_get_basic_ios(this));
7203 DEFINE_THISCALL_WRAPPER(basic_istream_char_vector_dtor, 8)
7204 basic_istream_char* __thiscall basic_istream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
7206 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
7208 TRACE("(%p %x)\n", this, flags);
7210 if(flags & 2) {
7211 /* we have an array, with the number of elements stored before the first object */
7212 INT_PTR i, *ptr = (INT_PTR *)this-1;
7214 for(i=*ptr-1; i>=0; i--)
7215 basic_istream_char_vbase_dtor(this+i);
7216 MSVCRT_operator_delete(ptr);
7217 } else {
7218 basic_istream_char_vbase_dtor(this);
7219 if(flags & 1)
7220 MSVCRT_operator_delete(this);
7223 return this;
7226 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
7227 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
7228 DEFINE_THISCALL_WRAPPER(basic_istream_char__Ipfx, 8)
7229 MSVCP_bool __thiscall basic_istream_char__Ipfx(basic_istream_char *this, MSVCP_bool noskip)
7231 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7233 TRACE("(%p %d)\n", this, noskip);
7235 if(ios_base_good(&base->base)) {
7236 if(basic_ios_char_tie_get(base))
7237 basic_ostream_char_flush(basic_ios_char_tie_get(base));
7239 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
7240 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7241 const ctype_char *ctype = ctype_char_use_facet(base->strbuf->loc);
7242 int ch;
7244 for(ch = basic_streambuf_char_sgetc(strbuf); ;
7245 ch = basic_streambuf_char_snextc(strbuf)) {
7246 if(ch == EOF) {
7247 basic_ios_char_setstate(base, IOSTATE_eofbit);
7248 break;
7251 if(!ctype_char_is_ch(ctype, _SPACE|_BLANK, ch))
7252 break;
7257 if(!ios_base_good(&base->base)) {
7258 basic_ios_char_setstate(base, IOSTATE_failbit);
7259 return FALSE;
7262 return TRUE;
7265 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
7266 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
7267 DEFINE_THISCALL_WRAPPER(basic_istream_char_ipfx, 8)
7268 MSVCP_bool __thiscall basic_istream_char_ipfx(basic_istream_char *this, MSVCP_bool noskip)
7270 return basic_istream_char__Ipfx(this, noskip);
7273 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
7274 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
7275 DEFINE_THISCALL_WRAPPER(basic_istream_char_isfx, 4)
7276 void __thiscall basic_istream_char_isfx(basic_istream_char *this)
7278 TRACE("(%p)\n", this);
7281 static BOOL basic_istream_char_sentry_create(basic_istream_char *istr, MSVCP_bool noskip)
7283 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
7285 if(basic_ios_char_rdbuf_get(base))
7286 basic_streambuf_char__Lock(base->strbuf);
7288 return basic_istream_char_ipfx(istr, noskip);
7291 static void basic_istream_char_sentry_destroy(basic_istream_char *istr)
7293 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
7295 if(basic_ios_char_rdbuf_get(base))
7296 basic_streambuf_char__Unlock(base->strbuf);
7299 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBEHXZ */
7300 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QEBA_JXZ */
7301 DEFINE_THISCALL_WRAPPER(basic_istream_char_gcount, 4)
7302 int __thiscall basic_istream_char_gcount(const basic_istream_char *this)
7304 TRACE("(%p)\n", this);
7305 return this->count;
7308 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
7309 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
7310 DEFINE_THISCALL_WRAPPER(basic_istream_char_get, 4)
7311 int __thiscall basic_istream_char_get(basic_istream_char *this)
7313 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7314 int ret;
7316 TRACE("(%p)\n", this);
7318 this->count = 0;
7320 if(!basic_istream_char_sentry_create(this, TRUE)) {
7321 basic_istream_char_sentry_destroy(this);
7322 return EOF;
7325 ret = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(base));
7326 basic_istream_char_sentry_destroy(this);
7327 if(ret == EOF)
7328 basic_ios_char_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
7329 else
7330 this->count++;
7332 return ret;
7335 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAD@Z */
7336 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAD@Z */
7337 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_ch, 8)
7338 basic_istream_char* __thiscall basic_istream_char_get_ch(basic_istream_char *this, char *ch)
7340 int ret;
7342 TRACE("(%p %p)\n", this, ch);
7344 ret = basic_istream_char_get(this);
7345 if(ret != EOF)
7346 *ch = (char)ret;
7347 return this;
7350 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
7351 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
7352 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str_delim, 16)
7353 basic_istream_char* __thiscall basic_istream_char_get_str_delim(basic_istream_char *this, char *str, streamsize count, char delim)
7355 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7356 int ch = delim;
7358 TRACE("(%p %p %ld %c)\n", this, str, count, delim);
7360 this->count = 0;
7362 if(basic_istream_char_sentry_create(this, TRUE)) {
7363 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7365 for(ch = basic_streambuf_char_sgetc(strbuf); count>1;
7366 ch = basic_streambuf_char_snextc(strbuf)) {
7367 if(ch==EOF || ch==delim)
7368 break;
7370 *str++ = ch;
7371 this->count++;
7372 count--;
7375 basic_istream_char_sentry_destroy(this);
7377 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
7378 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7379 if(count > 0)
7380 *str = 0;
7381 return this;
7384 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
7385 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
7386 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str, 12)
7387 basic_istream_char* __thiscall basic_istream_char_get_str(basic_istream_char *this, char *str, streamsize count)
7389 return basic_istream_char_get_str_delim(this, str, count, '\n');
7392 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
7393 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
7394 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf_delim, 12)
7395 basic_istream_char* __thiscall basic_istream_char_get_streambuf_delim(basic_istream_char *this, basic_streambuf_char *strbuf, char delim)
7397 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7398 int ch = delim;
7400 TRACE("(%p %p %c)\n", this, strbuf, delim);
7402 this->count = 0;
7404 if(basic_istream_char_sentry_create(this, TRUE)) {
7405 basic_streambuf_char *strbuf_read = basic_ios_char_rdbuf_get(base);
7407 for(ch = basic_streambuf_char_sgetc(strbuf_read); ;
7408 ch = basic_streambuf_char_snextc(strbuf_read)) {
7409 if(ch==EOF || ch==delim)
7410 break;
7412 if(basic_streambuf_char_sputc(strbuf, ch) == EOF)
7413 break;
7414 this->count++;
7417 basic_istream_char_sentry_destroy(this);
7419 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
7420 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7421 return this;
7424 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
7425 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
7426 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf, 8)
7427 basic_istream_char* __thiscall basic_istream_char_get_streambuf(basic_istream_char *this, basic_streambuf_char *strbuf)
7429 return basic_istream_char_get_streambuf_delim(this, strbuf, '\n');
7432 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
7433 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
7434 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline_delim, 16)
7435 basic_istream_char* __thiscall basic_istream_char_getline_delim(basic_istream_char *this, char *str, streamsize count, char delim)
7437 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7438 int ch = (unsigned char)delim;
7440 TRACE("(%p %p %ld %c)\n", this, str, count, delim);
7442 this->count = 0;
7444 if(basic_istream_char_sentry_create(this, TRUE) && count>0) {
7445 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7447 while(count > 1) {
7448 ch = basic_streambuf_char_sbumpc(strbuf);
7450 if(ch==EOF || ch==(unsigned char)delim)
7451 break;
7453 *str++ = ch;
7454 this->count++;
7455 count--;
7458 if(ch == (unsigned char)delim)
7459 this->count++;
7460 else if(ch != EOF) {
7461 ch = basic_streambuf_char_sgetc(strbuf);
7463 if(ch == (unsigned char)delim) {
7464 basic_streambuf_char__Gninc(strbuf);
7465 this->count++;
7469 basic_istream_char_sentry_destroy(this);
7471 basic_ios_char_setstate(base, (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
7472 (!this->count || (ch!=(unsigned char)delim && ch!=EOF) ? IOSTATE_failbit : IOSTATE_goodbit));
7473 if(count > 0)
7474 *str = 0;
7475 return this;
7478 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
7479 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
7480 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline, 12)
7481 basic_istream_char* __thiscall basic_istream_char_getline(basic_istream_char *this, char *str, streamsize count)
7483 return basic_istream_char_getline_delim(this, str, count, '\n');
7486 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@HH@Z */
7487 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
7488 DEFINE_THISCALL_WRAPPER(basic_istream_char_ignore, 12)
7489 basic_istream_char* __thiscall basic_istream_char_ignore(basic_istream_char *this, streamsize count, int delim)
7491 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7492 int ch = (unsigned char)delim;
7493 unsigned int state;
7495 TRACE("(%p %ld %d)\n", this, count, delim);
7497 this->count = 0;
7499 if(basic_istream_char_sentry_create(this, TRUE)) {
7500 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7501 state = IOSTATE_goodbit;
7503 while(count > 0) {
7504 ch = basic_streambuf_char_sbumpc(strbuf);
7506 if(ch==EOF) {
7507 state = IOSTATE_eofbit;
7508 break;
7511 if(ch==(unsigned char)delim)
7512 break;
7514 this->count++;
7515 if(count != INT_MAX)
7516 count--;
7518 }else
7519 state = IOSTATE_failbit;
7520 basic_istream_char_sentry_destroy(this);
7522 basic_ios_char_setstate(base, state);
7523 return this;
7526 /* ?ws@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@1@AAV21@@Z */
7527 /* ?ws@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
7528 basic_istream_char* __cdecl ws_basic_istream_char(basic_istream_char *istream)
7530 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
7531 int ch = '\n';
7533 TRACE("(%p)\n", istream);
7535 if(basic_istream_char_sentry_create(istream, TRUE)) {
7536 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7537 const ctype_char *ctype = ctype_char_use_facet(strbuf->loc);
7539 for(ch = basic_streambuf_char_sgetc(strbuf); ctype_char_is_ch(ctype, _SPACE, ch);
7540 ch = basic_streambuf_char_snextc(strbuf)) {
7541 if(ch == EOF)
7542 break;
7545 basic_istream_char_sentry_destroy(istream);
7547 if(ch == EOF)
7548 basic_ios_char_setstate(base, IOSTATE_eofbit);
7549 return istream;
7552 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
7553 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
7554 DEFINE_THISCALL_WRAPPER(basic_istream_char_peek, 4)
7555 int __thiscall basic_istream_char_peek(basic_istream_char *this)
7557 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7558 int ret = EOF;
7560 TRACE("(%p)\n", this);
7562 this->count = 0;
7564 if(basic_istream_char_sentry_create(this, TRUE))
7565 ret = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
7566 basic_istream_char_sentry_destroy(this);
7568 if (ret == EOF)
7569 basic_ios_char_setstate(base, IOSTATE_eofbit);
7571 return ret;
7574 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADIH@Z */
7575 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_K_J@Z */
7576 static basic_istream_char* basic_istream_char__Read_s(basic_istream_char *this, char *str, MSVCP_size_t size, streamsize count)
7578 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7579 IOSB_iostate state = IOSTATE_goodbit;
7581 TRACE("(%p %p %lu %ld)\n", this, str, size, count);
7583 if(basic_istream_char_sentry_create(this, TRUE)) {
7584 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7586 this->count = basic_streambuf_char__Sgetn_s(strbuf, str, size, count);
7587 if(this->count != count)
7588 state |= IOSTATE_failbit | IOSTATE_eofbit;
7589 }else {
7590 this->count = 0;
7592 basic_istream_char_sentry_destroy(this);
7594 basic_ios_char_setstate(base, state);
7595 return this;
7598 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
7599 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
7600 DEFINE_THISCALL_WRAPPER(basic_istream_char_read, 12)
7601 basic_istream_char* __thiscall basic_istream_char_read(basic_istream_char *this, char *str, streamsize count)
7603 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7604 IOSB_iostate state = IOSTATE_goodbit;
7606 TRACE("(%p %p %ld)\n", this, str, count);
7608 if(basic_istream_char_sentry_create(this, TRUE)) {
7609 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7611 this->count = basic_streambuf_char_sgetn(strbuf, str, count);
7612 if(this->count != count)
7613 state |= IOSTATE_failbit | IOSTATE_eofbit;
7614 }else {
7615 this->count = 0;
7617 basic_istream_char_sentry_destroy(this);
7619 basic_ios_char_setstate(base, state);
7620 return this;
7623 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
7624 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
7625 static streamsize basic_istream_char__Readsome_s(basic_istream_char *this, char *str, MSVCP_size_t size, streamsize count)
7627 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7628 IOSB_iostate state = IOSTATE_goodbit;
7630 TRACE("(%p %p %lu %ld)\n", this, str, size, count);
7632 this->count = 0;
7634 if(basic_istream_char_sentry_create(this, TRUE)) {
7635 streamsize avail = basic_streambuf_char_in_avail(basic_ios_char_rdbuf_get(base));
7636 if(avail > count)
7637 avail = count;
7639 if(avail == -1)
7640 state |= IOSTATE_eofbit;
7641 else if(avail > 0)
7642 basic_istream_char__Read_s(this, str, size, avail);
7643 }else {
7644 state |= IOSTATE_failbit;
7646 basic_istream_char_sentry_destroy(this);
7648 basic_ios_char_setstate(base, state);
7649 return this->count;
7652 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
7653 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
7654 DEFINE_THISCALL_WRAPPER(basic_istream_char_readsome, 12)
7655 streamsize __thiscall basic_istream_char_readsome(basic_istream_char *this, char *str, streamsize count)
7657 return basic_istream_char__Readsome_s(this, str, count, count);
7660 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
7661 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
7662 DEFINE_THISCALL_WRAPPER(basic_istream_char_putback, 8)
7663 basic_istream_char* __thiscall basic_istream_char_putback(basic_istream_char *this, char ch)
7665 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7666 IOSB_iostate state = IOSTATE_goodbit;
7668 TRACE("(%p %c)\n", this, ch);
7670 this->count = 0;
7672 if(basic_istream_char_sentry_create(this, TRUE)) {
7673 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7675 if(!ios_base_good(&base->base))
7676 state |= IOSTATE_failbit;
7677 else if(!strbuf || basic_streambuf_char_sputbackc(strbuf, ch)==EOF)
7678 state |= IOSTATE_badbit;
7680 basic_istream_char_sentry_destroy(this);
7682 basic_ios_char_setstate(base, state);
7683 return this;
7686 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
7687 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
7688 DEFINE_THISCALL_WRAPPER(basic_istream_char_unget, 4)
7689 basic_istream_char* __thiscall basic_istream_char_unget(basic_istream_char *this)
7691 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7692 IOSB_iostate state = IOSTATE_goodbit;
7694 TRACE("(%p)\n", this);
7696 this->count = 0;
7698 if(basic_istream_char_sentry_create(this, TRUE)) {
7699 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7701 if(!ios_base_good(&base->base))
7702 state |= IOSTATE_failbit;
7703 else if(!strbuf || basic_streambuf_char_sungetc(strbuf)==EOF)
7704 state |= IOSTATE_badbit;
7706 basic_istream_char_sentry_destroy(this);
7708 basic_ios_char_setstate(base, state);
7709 return this;
7712 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
7713 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
7714 DEFINE_THISCALL_WRAPPER(basic_istream_char_sync, 4)
7715 int __thiscall basic_istream_char_sync(basic_istream_char *this)
7717 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7718 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7720 TRACE("(%p)\n", this);
7722 if(!strbuf)
7723 return -1;
7725 if(basic_istream_char_sentry_create(this, TRUE)) {
7726 if(basic_streambuf_char_pubsync(strbuf) != -1) {
7727 basic_istream_char_sentry_destroy(this);
7728 return 0;
7731 basic_istream_char_sentry_destroy(this);
7733 basic_ios_char_setstate(base, IOSTATE_badbit);
7734 return -1;
7737 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
7738 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
7739 DEFINE_THISCALL_WRAPPER(basic_istream_char_tellg, 8)
7740 fpos_int* __thiscall basic_istream_char_tellg(basic_istream_char *this, fpos_int *ret)
7742 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7744 TRACE("(%p %p)\n", this, ret);
7746 if(ios_base_fail(&base->base)) {
7747 ret->off = -1;
7748 ret->pos = 0;
7749 ret->state = 0;
7750 return ret;
7753 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
7754 ret, 0, SEEKDIR_cur, OPENMODE_in);
7756 if(ret->off==-1 && ret->pos==0 && ret->state==0)
7757 basic_ios_char_setstate(base, IOSTATE_failbit);
7759 return ret;
7762 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
7763 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
7764 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg, 12)
7765 basic_istream_char* __thiscall basic_istream_char_seekg(basic_istream_char *this, streamoff off, int dir)
7767 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7769 TRACE("(%p %ld %d)\n", this, off, dir);
7771 if(!ios_base_fail(&base->base)) {
7772 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7773 fpos_int ret;
7775 basic_streambuf_char_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
7777 if(ret.off==-1 && ret.pos==0 && ret.state==0)
7778 basic_ios_char_setstate(base, IOSTATE_failbit);
7779 else
7780 basic_ios_char_clear(base, IOSTATE_goodbit);
7781 return this;
7782 }else
7783 basic_ios_char_clear(base, IOSTATE_goodbit);
7785 return this;
7788 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
7789 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
7790 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg_fpos, 28)
7791 basic_istream_char* __thiscall basic_istream_char_seekg_fpos(basic_istream_char *this, fpos_int pos)
7793 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7795 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
7797 if(!ios_base_fail(&base->base)) {
7798 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7799 fpos_int ret;
7801 basic_streambuf_char_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
7803 if(ret.off==-1 && ret.pos==0 && ret.state==0)
7804 basic_ios_char_setstate(base, IOSTATE_failbit);
7805 else
7806 basic_ios_char_clear(base, IOSTATE_goodbit);
7807 return this;
7808 }else
7809 basic_ios_char_clear(base, IOSTATE_goodbit);
7811 return this;
7814 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAF@Z */
7815 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAF@Z */
7816 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_short, 8)
7817 basic_istream_char* __thiscall basic_istream_char_read_short(basic_istream_char *this, short *v)
7819 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7820 int state = IOSTATE_goodbit;
7822 TRACE("(%p %p)\n", this, v);
7824 if(basic_istream_char_sentry_create(this, FALSE)) {
7825 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7826 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7827 istreambuf_iterator_char first={0}, last={0};
7828 LONG tmp;
7830 first.strbuf = strbuf;
7831 num_get_char_get_long(numget, &last, first, last, &base->base, &state, &tmp);
7833 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
7834 *v = tmp;
7835 else
7836 state |= IOSTATE_failbit;
7838 basic_istream_char_sentry_destroy(this);
7840 basic_ios_char_setstate(base, state);
7841 return this;
7844 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAG@Z */
7845 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAG@Z */
7846 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ushort, 8)
7847 basic_istream_char* __thiscall basic_istream_char_read_ushort(basic_istream_char *this, unsigned short *v)
7849 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7850 int state = IOSTATE_goodbit;
7852 TRACE("(%p %p)\n", this, v);
7854 if(basic_istream_char_sentry_create(this, FALSE)) {
7855 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7856 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7857 istreambuf_iterator_char first={0}, last={0};
7859 first.strbuf = strbuf;
7860 num_get_char_get_ushort(numget, &last, first, last, &base->base, &state, v);
7862 basic_istream_char_sentry_destroy(this);
7864 basic_ios_char_setstate(base, state);
7865 return this;
7868 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAH@Z */
7869 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAH@Z */
7870 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int, 8)
7871 basic_istream_char* __thiscall basic_istream_char_read_int(basic_istream_char *this, int *v)
7873 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7874 int state = IOSTATE_goodbit;
7876 TRACE("(%p %p)\n", this, v);
7878 if(basic_istream_char_sentry_create(this, FALSE)) {
7879 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7880 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7881 istreambuf_iterator_char first={0}, last={0};
7883 first.strbuf = strbuf;
7884 num_get_char_get_long(numget, &last, first, last, &base->base, &state, v);
7886 basic_istream_char_sentry_destroy(this);
7888 basic_ios_char_setstate(base, state);
7889 return this;
7892 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAI@Z */
7893 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAI@Z */
7894 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint, 8)
7895 basic_istream_char* __thiscall basic_istream_char_read_uint(basic_istream_char *this, unsigned int *v)
7897 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7898 int state = IOSTATE_goodbit;
7900 TRACE("(%p %p)\n", this, v);
7902 if(basic_istream_char_sentry_create(this, FALSE)) {
7903 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7904 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7905 istreambuf_iterator_char first={0}, last={0};
7907 first.strbuf = strbuf;
7908 num_get_char_get_uint(numget, &last, first, last, &base->base, &state, v);
7910 basic_istream_char_sentry_destroy(this);
7912 basic_ios_char_setstate(base, state);
7913 return this;
7916 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAJ@Z */
7917 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAJ@Z */
7918 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_long, 8)
7919 basic_istream_char* __thiscall basic_istream_char_read_long(basic_istream_char *this, LONG *v)
7921 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7922 int state = IOSTATE_goodbit;
7924 TRACE("(%p %p)\n", this, v);
7926 if(basic_istream_char_sentry_create(this, FALSE)) {
7927 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7928 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7929 istreambuf_iterator_char first={0}, last={0};
7931 first.strbuf = strbuf;
7932 num_get_char_get_long(numget, &last, first, last, &base->base, &state, v);
7934 basic_istream_char_sentry_destroy(this);
7936 basic_ios_char_setstate(base, state);
7937 return this;
7940 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAK@Z */
7941 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAK@Z */
7942 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ulong, 8)
7943 basic_istream_char* __thiscall basic_istream_char_read_ulong(basic_istream_char *this, ULONG *v)
7945 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7946 int state = IOSTATE_goodbit;
7948 TRACE("(%p %p)\n", this, v);
7950 if(basic_istream_char_sentry_create(this, FALSE)) {
7951 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7952 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7953 istreambuf_iterator_char first={0}, last={0};
7955 first.strbuf = strbuf;
7956 num_get_char_get_ulong(numget, &last, first, last, &base->base, &state, v);
7958 basic_istream_char_sentry_destroy(this);
7960 basic_ios_char_setstate(base, state);
7961 return this;
7964 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAM@Z */
7965 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAM@Z */
7966 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_float, 8)
7967 basic_istream_char* __thiscall basic_istream_char_read_float(basic_istream_char *this, float *v)
7969 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7970 int state = IOSTATE_goodbit;
7972 TRACE("(%p %p)\n", this, v);
7974 if(basic_istream_char_sentry_create(this, FALSE)) {
7975 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7976 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7977 istreambuf_iterator_char first={0}, last={0};
7979 first.strbuf = strbuf;
7980 num_get_char_get_float(numget, &last, first, last, &base->base, &state, v);
7982 basic_istream_char_sentry_destroy(this);
7984 basic_ios_char_setstate(base, state);
7985 return this;
7988 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAN@Z */
7989 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAN@Z */
7990 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_double, 8)
7991 basic_istream_char* __thiscall basic_istream_char_read_double(basic_istream_char *this, double *v)
7993 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7994 int state = IOSTATE_goodbit;
7996 TRACE("(%p %p)\n", this, v);
7998 if(basic_istream_char_sentry_create(this, FALSE)) {
7999 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8000 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8001 istreambuf_iterator_char first={0}, last={0};
8003 first.strbuf = strbuf;
8004 num_get_char_get_double(numget, &last, first, last, &base->base, &state, v);
8006 basic_istream_char_sentry_destroy(this);
8008 basic_ios_char_setstate(base, state);
8009 return this;
8012 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAO@Z */
8013 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAO@Z */
8014 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ldouble, 8)
8015 basic_istream_char* __thiscall basic_istream_char_read_ldouble(basic_istream_char *this, double *v)
8017 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8018 int state = IOSTATE_goodbit;
8020 TRACE("(%p %p)\n", this, v);
8022 if(basic_istream_char_sentry_create(this, FALSE)) {
8023 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8024 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8025 istreambuf_iterator_char first={0}, last={0};
8027 first.strbuf = strbuf;
8028 num_get_char_get_ldouble(numget, &last, first, last, &base->base, &state, v);
8030 basic_istream_char_sentry_destroy(this);
8032 basic_ios_char_setstate(base, state);
8033 return this;
8036 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAPAX@Z */
8037 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
8038 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ptr, 8)
8039 basic_istream_char* __thiscall basic_istream_char_read_ptr(basic_istream_char *this, void **v)
8041 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8042 int state = IOSTATE_goodbit;
8044 TRACE("(%p %p)\n", this, v);
8046 if(basic_istream_char_sentry_create(this, FALSE)) {
8047 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8048 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8049 istreambuf_iterator_char first={0}, last={0};
8051 first.strbuf = strbuf;
8052 num_get_char_get_void(numget, &last, first, last, &base->base, &state, v);
8054 basic_istream_char_sentry_destroy(this);
8056 basic_ios_char_setstate(base, state);
8057 return this;
8060 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_J@Z */
8061 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_J@Z */
8062 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int64, 8)
8063 basic_istream_char* __thiscall basic_istream_char_read_int64(basic_istream_char *this, __int64 *v)
8065 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8066 int state = IOSTATE_goodbit;
8068 TRACE("(%p %p)\n", this, v);
8070 if(basic_istream_char_sentry_create(this, FALSE)) {
8071 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8072 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8073 istreambuf_iterator_char first={0}, last={0};
8075 first.strbuf = strbuf;
8076 num_get_char_get_int64(numget, &last, first, last, &base->base, &state, v);
8078 basic_istream_char_sentry_destroy(this);
8080 basic_ios_char_setstate(base, state);
8081 return this;
8084 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_K@Z */
8085 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_K@Z */
8086 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint64, 8)
8087 basic_istream_char* __thiscall basic_istream_char_read_uint64(basic_istream_char *this, unsigned __int64 *v)
8089 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8090 int state = IOSTATE_goodbit;
8092 TRACE("(%p %p)\n", this, v);
8094 if(basic_istream_char_sentry_create(this, FALSE)) {
8095 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8096 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8097 istreambuf_iterator_char first={0}, last={0};
8099 first.strbuf = strbuf;
8100 num_get_char_get_uint64(numget, &last, first, last, &base->base, &state, v);
8102 basic_istream_char_sentry_destroy(this);
8104 basic_ios_char_setstate(base, state);
8105 return this;
8108 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_N@Z */
8109 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_N@Z */
8110 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_bool, 8)
8111 basic_istream_char* __thiscall basic_istream_char_read_bool(basic_istream_char *this, MSVCP_bool *v)
8113 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8114 int state = IOSTATE_goodbit;
8116 TRACE("(%p %p)\n", this, v);
8118 if(basic_istream_char_sentry_create(this, FALSE)) {
8119 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8120 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8121 istreambuf_iterator_char first={0}, last={0};
8123 first.strbuf = strbuf;
8124 num_get_char_get_bool(numget, &last, first, last, &base->base, &state, v);
8126 basic_istream_char_sentry_destroy(this);
8128 basic_ios_char_setstate(base, state);
8129 return this;
8132 /* ??$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 */
8133 /* ??$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 */
8134 basic_istream_char* __cdecl basic_istream_char_getline_bstr_delim(
8135 basic_istream_char *istream, basic_string_char *str, char delim)
8137 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
8138 IOSB_iostate state = IOSTATE_goodbit;
8139 int c = (unsigned char)delim;
8141 TRACE("(%p %p %c)\n", istream, str, delim);
8143 if(basic_istream_char_sentry_create(istream, TRUE)) {
8144 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8145 MSVCP_basic_string_char_clear(str);
8147 c = basic_streambuf_char_sgetc(strbuf);
8148 for(; c!=(unsigned char)delim && c!=EOF; c = basic_streambuf_char_snextc(strbuf))
8149 MSVCP_basic_string_char_append_ch(str, c);
8150 if(c==EOF) state |= IOSTATE_eofbit;
8151 else if(c==(unsigned char)delim) basic_streambuf_char_sbumpc(strbuf);
8153 if(!MSVCP_basic_string_char_length(str) && c!=(unsigned char)delim) state |= IOSTATE_failbit;
8155 basic_istream_char_sentry_destroy(istream);
8157 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream), state);
8158 return istream;
8161 /* ??$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 */
8162 /* ??$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 */
8163 basic_istream_char* __cdecl basic_istream_char_getline_bstr(
8164 basic_istream_char *istream, basic_string_char *str)
8166 return basic_istream_char_getline_bstr_delim(istream, str, '\n');
8169 /* ??$?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 */
8170 /* ??$?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 */
8171 basic_istream_char* __cdecl basic_istream_char_read_bstr(
8172 basic_istream_char *istream, basic_string_char *str)
8174 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
8175 IOSB_iostate state = IOSTATE_failbit;
8176 int c = '\n';
8178 TRACE("(%p %p)\n", istream, str);
8180 if(basic_istream_char_sentry_create(istream, FALSE)) {
8181 const ctype_char *ctype = ctype_char_use_facet(base->strbuf->loc);
8182 MSVCP_size_t count = ios_base_width_get(&base->base);
8184 if(!count)
8185 count = -1;
8187 MSVCP_basic_string_char_clear(str);
8189 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
8190 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
8191 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
8192 state = IOSTATE_goodbit;
8193 MSVCP_basic_string_char_append_ch(str, c);
8196 basic_istream_char_sentry_destroy(istream);
8198 ios_base_width_set(&base->base, 0);
8199 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8200 return istream;
8203 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAD@Z */
8204 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAD@Z */
8205 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAC@Z */
8206 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAC@Z */
8207 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAE@Z */
8208 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAE@Z */
8209 basic_istream_char* __cdecl basic_istream_char_read_str(basic_istream_char *istream, char *str)
8211 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
8212 IOSB_iostate state = IOSTATE_failbit;
8213 int c = '\n';
8215 TRACE("(%p %p)\n", istream, str);
8217 if(basic_istream_char_sentry_create(istream, FALSE)) {
8218 const ctype_char *ctype = ctype_char_use_facet(base->strbuf->loc);
8219 MSVCP_size_t count = ios_base_width_get(&base->base)-1;
8221 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
8222 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
8223 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
8224 state = IOSTATE_goodbit;
8225 *str++ = c;
8228 basic_istream_char_sentry_destroy(istream);
8230 *str = 0;
8231 ios_base_width_set(&base->base, 0);
8232 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8233 return istream;
8236 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAD@Z */
8237 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAD@Z */
8238 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAC@Z */
8239 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAC@Z */
8240 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAE@Z */
8241 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAE@Z */
8242 basic_istream_char* __cdecl basic_istream_char_read_ch(basic_istream_char *istream, char *ch)
8244 IOSB_iostate state = IOSTATE_failbit;
8245 int c = 0;
8247 TRACE("(%p %p)\n", istream, ch);
8249 if(basic_istream_char_sentry_create(istream, FALSE)) {
8250 c = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(
8251 basic_istream_char_get_basic_ios(istream)));
8252 if(c != EOF) {
8253 state = IOSTATE_goodbit;
8254 *ch = c;
8257 basic_istream_char_sentry_destroy(istream);
8259 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream),
8260 state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8261 return istream;
8264 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
8265 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
8266 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_streambuf, 8)
8267 basic_istream_char* __thiscall basic_istream_char_read_streambuf(
8268 basic_istream_char *this, basic_streambuf_char *streambuf)
8270 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8271 IOSB_iostate state = IOSTATE_failbit;
8272 int c = '\n';
8274 TRACE("(%p %p)\n", this, streambuf);
8276 if(basic_istream_char_sentry_create(this, FALSE)) {
8277 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base)); c!=EOF;
8278 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base))) {
8279 state = IOSTATE_goodbit;
8280 if(basic_streambuf_char_sputc(streambuf, c) == EOF)
8281 break;
8284 basic_istream_char_sentry_destroy(this);
8286 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8287 return this;
8290 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
8291 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
8292 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func, 8)
8293 basic_istream_char* __thiscall basic_istream_char_read_func(basic_istream_char *this,
8294 basic_istream_char* (__cdecl *pfunc)(basic_istream_char*))
8296 TRACE("(%p %p)\n", this, pfunc);
8297 pfunc(this);
8298 return this;
8301 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
8302 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
8303 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_basic_ios, 8)
8304 basic_istream_char* __thiscall basic_istream_char_read_func_basic_ios(basic_istream_char *this,
8305 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
8307 TRACE("(%p %p)\n", this, pfunc);
8308 pfunc(basic_istream_char_get_basic_ios(this));
8309 return this;
8312 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
8313 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
8314 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_ios_base, 8)
8315 basic_istream_char* __thiscall basic_istream_char_read_func_ios_base(basic_istream_char *this,
8316 ios_base* (__cdecl *pfunc)(ios_base*))
8318 TRACE("(%p %p)\n", this, pfunc);
8319 pfunc(&basic_istream_char_get_basic_ios(this)->base);
8320 return this;
8323 /* Caution: basic_istream uses virtual inheritance. */
8324 static inline basic_ios_wchar* basic_istream_wchar_get_basic_ios(basic_istream_wchar *this)
8326 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
8329 static inline basic_ios_wchar* basic_istream_wchar_to_basic_ios(basic_istream_wchar *ptr)
8331 return (basic_ios_wchar*)((char*)ptr+basic_istream_wchar_vbtable[1]);
8334 static inline basic_istream_wchar* basic_istream_wchar_from_basic_ios(basic_ios_wchar *ptr)
8336 return (basic_istream_wchar*)((char*)ptr-basic_istream_wchar_vbtable[1]);
8339 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */
8340 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */
8341 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_init, 20)
8342 basic_istream_wchar* __thiscall basic_istream_wchar_ctor_init(basic_istream_wchar *this,
8343 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool noinit, MSVCP_bool virt_init)
8345 basic_ios_wchar *base;
8347 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
8349 if(virt_init) {
8350 this->vbtable = basic_istream_wchar_vbtable;
8351 base = basic_istream_wchar_get_basic_ios(this);
8352 basic_ios_wchar_ctor(base);
8353 }else {
8354 base = basic_istream_wchar_get_basic_ios(this);
8357 base->base.vtable = &MSVCP_basic_istream_wchar_vtable;
8358 this->count = 0;
8359 if(!noinit)
8360 basic_ios_wchar_init(base, strbuf, isstd);
8361 return this;
8364 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
8365 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
8366 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_init, 20)
8367 basic_istream_wchar* __thiscall basic_istream_short_ctor_init(basic_istream_wchar *this,
8368 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool noinit, MSVCP_bool virt_init)
8370 basic_istream_wchar_ctor_init(this, strbuf, isstd, noinit, virt_init);
8371 basic_istream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_istream_short_vtable;
8372 return this;
8375 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
8376 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
8377 static basic_istream_wchar* basic_istream_wchar_ctor(basic_istream_wchar *this,
8378 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
8380 return basic_istream_wchar_ctor_init(this, strbuf, isstd, FALSE, virt_init);
8383 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
8384 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
8385 static basic_istream_wchar* basic_istream_short_ctor(basic_istream_wchar *this,
8386 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
8388 return basic_istream_short_ctor_init(this, strbuf, isstd, FALSE, virt_init);
8391 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */
8392 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
8393 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_uninitialized, 12)
8394 basic_istream_wchar* __thiscall basic_istream_wchar_ctor_uninitialized(
8395 basic_istream_wchar *this, int uninitialized, MSVCP_bool virt_init)
8397 basic_ios_wchar *base;
8399 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
8401 if(virt_init) {
8402 this->vbtable = basic_istream_wchar_vbtable;
8403 base = basic_istream_wchar_get_basic_ios(this);
8404 basic_ios_wchar_ctor(base);
8405 }else {
8406 base = basic_istream_wchar_get_basic_ios(this);
8409 base->base.vtable = &MSVCP_basic_istream_wchar_vtable;
8410 ios_base_Addstd(&base->base);
8411 return this;
8414 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
8415 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
8416 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_uninitialized, 12)
8417 basic_istream_wchar* __thiscall basic_istream_short_ctor_uninitialized(
8418 basic_istream_wchar *this, int uninitialized, MSVCP_bool virt_init)
8420 basic_istream_wchar_ctor_uninitialized(this, uninitialized, virt_init);
8421 basic_istream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_istream_short_vtable;
8422 return this;
8425 /* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
8426 /* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
8427 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UAE@XZ */
8428 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
8429 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_dtor, 4)
8430 void __thiscall basic_istream_wchar_dtor(basic_ios_wchar *base)
8432 basic_istream_wchar *this = basic_istream_wchar_from_basic_ios(base);
8434 /* don't destroy virtual base here */
8435 TRACE("(%p)\n", this);
8438 /* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
8439 /* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
8440 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
8441 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
8442 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_vbase_dtor, 4)
8443 void __thiscall basic_istream_wchar_vbase_dtor(basic_istream_wchar *this)
8445 TRACE("(%p)\n", this);
8446 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(this));
8447 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(this));
8450 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_vector_dtor, 8)
8451 basic_istream_wchar* __thiscall basic_istream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
8453 basic_istream_wchar *this = basic_istream_wchar_from_basic_ios(base);
8455 TRACE("(%p %x)\n", this, flags);
8457 if(flags & 2) {
8458 /* we have an array, with the number of elements stored before the first object */
8459 INT_PTR i, *ptr = (INT_PTR *)this-1;
8461 for(i=*ptr-1; i>=0; i--)
8462 basic_istream_wchar_vbase_dtor(this+i);
8463 MSVCRT_operator_delete(ptr);
8464 } else {
8465 basic_istream_wchar_vbase_dtor(this);
8466 if(flags & 1)
8467 MSVCRT_operator_delete(this);
8470 return this;
8473 /* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */
8474 /* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */
8475 /* ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
8476 /* ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
8477 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Ipfx, 8)
8478 MSVCP_bool __thiscall basic_istream_wchar__Ipfx(basic_istream_wchar *this, MSVCP_bool noskip)
8480 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8482 TRACE("(%p %d)\n", this, noskip);
8484 if(ios_base_good(&base->base)) {
8485 if(basic_ios_wchar_tie_get(base))
8486 basic_ostream_wchar_flush(basic_ios_wchar_tie_get(base));
8488 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
8489 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8490 const ctype_wchar *ctype = ctype_wchar_use_facet(base->strbuf->loc);
8491 int ch;
8493 for(ch = basic_streambuf_wchar_sgetc(strbuf); ;
8494 ch = basic_streambuf_wchar_snextc(strbuf)) {
8495 if(ch == WEOF) {
8496 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
8497 break;
8500 if(!ctype_wchar_is_ch(ctype, _SPACE|_BLANK, ch))
8501 break;
8506 if(!ios_base_good(&base->base)) {
8507 basic_ios_wchar_setstate(base, IOSTATE_failbit);
8508 return FALSE;
8510 return TRUE;
8513 /* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */
8514 /* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */
8515 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
8516 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
8517 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ipfx, 8)
8518 MSVCP_bool __thiscall basic_istream_wchar_ipfx(basic_istream_wchar *this, MSVCP_bool noskip)
8520 return basic_istream_wchar__Ipfx(this, noskip);
8523 /* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
8524 /* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
8525 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
8526 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
8527 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_isfx, 4)
8528 void __thiscall basic_istream_wchar_isfx(basic_istream_wchar *this)
8530 TRACE("(%p)\n", this);
8533 static BOOL basic_istream_wchar_sentry_create(basic_istream_wchar *istr, MSVCP_bool noskip)
8535 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr);
8537 if(basic_ios_wchar_rdbuf_get(base))
8538 basic_streambuf_wchar__Lock(base->strbuf);
8540 return basic_istream_wchar_ipfx(istr, noskip);
8543 static void basic_istream_wchar_sentry_destroy(basic_istream_wchar *istr)
8545 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr);
8547 if(basic_ios_wchar_rdbuf_get(base))
8548 basic_streambuf_wchar__Unlock(base->strbuf);
8551 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBEHXZ */
8552 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEBA_JXZ */
8553 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBEHXZ */
8554 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QEBA_JXZ */
8555 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_gcount, 4)
8556 int __thiscall basic_istream_wchar_gcount(const basic_istream_wchar *this)
8558 TRACE("(%p)\n", this);
8559 return this->count;
8562 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
8563 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
8564 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
8565 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
8566 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get, 4)
8567 unsigned short __thiscall basic_istream_wchar_get(basic_istream_wchar *this)
8569 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8570 int ret;
8572 TRACE("(%p)\n", this);
8574 this->count = 0;
8576 if(!basic_istream_wchar_sentry_create(this, TRUE)) {
8577 basic_istream_wchar_sentry_destroy(this);
8578 return WEOF;
8581 ret = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(base));
8582 basic_istream_wchar_sentry_destroy(this);
8583 if(ret == WEOF)
8584 basic_ios_wchar_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
8585 else
8586 this->count++;
8588 return ret;
8591 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AA_W@Z */
8592 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEA_W@Z */
8593 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAG@Z */
8594 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAG@Z */
8595 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_ch, 8)
8596 basic_istream_wchar* __thiscall basic_istream_wchar_get_ch(basic_istream_wchar *this, wchar_t *ch)
8598 unsigned short ret;
8600 TRACE("(%p %p)\n", this, ch);
8602 ret = basic_istream_wchar_get(this);
8603 if(ret != WEOF)
8604 *ch = (wchar_t)ret;
8605 return this;
8608 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */
8609 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */
8610 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
8611 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
8612 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str_delim, 16)
8613 basic_istream_wchar* __thiscall basic_istream_wchar_get_str_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
8615 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8616 unsigned short ch = delim;
8618 TRACE("(%p %p %ld %c)\n", this, str, count, delim);
8620 this->count = 0;
8622 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8623 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8625 for(ch = basic_streambuf_wchar_sgetc(strbuf); count>1;
8626 ch = basic_streambuf_wchar_snextc(strbuf)) {
8627 if(ch==WEOF || ch==delim)
8628 break;
8630 *str++ = ch;
8631 this->count++;
8632 count--;
8635 basic_istream_wchar_sentry_destroy(this);
8637 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
8638 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8639 if(count > 0)
8640 *str = 0;
8641 return this;
8644 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
8645 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
8646 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
8647 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
8648 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str, 12)
8649 basic_istream_wchar* __thiscall basic_istream_wchar_get_str(basic_istream_wchar *this, wchar_t *str, streamsize count)
8651 return basic_istream_wchar_get_str_delim(this, str, count, '\n');
8654 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */
8655 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */
8656 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
8657 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
8658 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf_delim, 12)
8659 basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf_delim(basic_istream_wchar *this, basic_streambuf_wchar *strbuf, wchar_t delim)
8661 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8662 unsigned short ch = delim;
8664 TRACE("(%p %p %c)\n", this, strbuf, delim);
8666 this->count = 0;
8668 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8669 basic_streambuf_wchar *strbuf_read = basic_ios_wchar_rdbuf_get(base);
8671 for(ch = basic_streambuf_wchar_sgetc(strbuf_read); ;
8672 ch = basic_streambuf_wchar_snextc(strbuf_read)) {
8673 if(ch==WEOF || ch==delim)
8674 break;
8676 if(basic_streambuf_wchar_sputc(strbuf, ch) == WEOF)
8677 break;
8678 this->count++;
8681 basic_istream_wchar_sentry_destroy(this);
8683 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
8684 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8685 return this;
8688 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */
8689 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */
8690 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
8691 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
8692 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf, 8)
8693 basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf(basic_istream_wchar *this, basic_streambuf_wchar *strbuf)
8695 return basic_istream_wchar_get_streambuf_delim(this, strbuf, '\n');
8698 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */
8699 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */
8700 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
8701 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
8702 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline_delim, 16)
8703 basic_istream_wchar* __thiscall basic_istream_wchar_getline_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
8705 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8706 unsigned short ch = delim;
8708 TRACE("(%p %p %ld %c)\n", this, str, count, delim);
8710 this->count = 0;
8712 if(basic_istream_wchar_sentry_create(this, TRUE) && count>0) {
8713 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8715 while(count > 1) {
8716 ch = basic_streambuf_wchar_sbumpc(strbuf);
8718 if(ch==WEOF || ch==delim)
8719 break;
8721 *str++ = ch;
8722 this->count++;
8723 count--;
8726 if(ch == delim)
8727 this->count++;
8728 else if(ch != WEOF) {
8729 ch = basic_streambuf_wchar_sgetc(strbuf);
8731 if(ch == delim) {
8732 basic_streambuf_wchar__Gninc(strbuf);
8733 this->count++;
8737 basic_istream_wchar_sentry_destroy(this);
8739 basic_ios_wchar_setstate(base, (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
8740 (!this->count || (ch!=delim && ch!=WEOF) ? IOSTATE_failbit : IOSTATE_goodbit));
8741 if(count > 0)
8742 *str = 0;
8743 return this;
8746 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
8747 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
8748 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
8749 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
8750 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline, 12)
8751 basic_istream_wchar* __thiscall basic_istream_wchar_getline(basic_istream_wchar *this, wchar_t *str, streamsize count)
8753 return basic_istream_wchar_getline_delim(this, str, count, '\n');
8756 /* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@HG@Z */
8757 /* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JG@Z */
8758 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@HG@Z */
8759 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JG@Z */
8760 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ignore, 12)
8761 basic_istream_wchar* __thiscall basic_istream_wchar_ignore(basic_istream_wchar *this, streamsize count, unsigned short delim)
8763 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8764 unsigned short ch = delim;
8765 unsigned int state;
8767 TRACE("(%p %ld %d)\n", this, count, delim);
8769 this->count = 0;
8771 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8772 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8773 state = IOSTATE_goodbit;
8775 while(count > 0) {
8776 ch = basic_streambuf_wchar_sbumpc(strbuf);
8778 if(ch==WEOF) {
8779 state = IOSTATE_eofbit;
8780 break;
8783 if(ch==delim)
8784 break;
8786 this->count++;
8787 if(count != INT_MAX)
8788 count--;
8790 }else
8791 state = IOSTATE_failbit;
8792 basic_istream_wchar_sentry_destroy(this);
8794 basic_ios_wchar_setstate(base, state);
8795 return this;
8798 /* ?ws@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
8799 /* ?ws@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
8800 /* ?ws@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@1@AAV21@@Z */
8801 /* ?ws@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
8802 basic_istream_wchar* __cdecl ws_basic_istream_wchar(basic_istream_wchar *istream)
8804 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
8805 unsigned short ch = '\n';
8807 TRACE("(%p)\n", istream);
8809 if(basic_istream_wchar_sentry_create(istream, TRUE)) {
8810 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8811 const ctype_wchar *ctype = ctype_wchar_use_facet(strbuf->loc);
8813 for(ch = basic_streambuf_wchar_sgetc(strbuf); ctype_wchar_is_ch(ctype, _SPACE, ch);
8814 ch = basic_streambuf_wchar_snextc(strbuf)) {
8815 if(ch == WEOF)
8816 break;
8819 basic_istream_wchar_sentry_destroy(istream);
8821 if(ch == WEOF)
8822 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
8823 return istream;
8826 /* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
8827 /* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
8828 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
8829 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
8830 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_peek, 4)
8831 unsigned short __thiscall basic_istream_wchar_peek(basic_istream_wchar *this)
8833 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8834 unsigned short ret = WEOF;
8836 TRACE("(%p)\n", this);
8838 this->count = 0;
8840 if(basic_istream_wchar_sentry_create(this, TRUE))
8841 ret = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
8842 basic_istream_wchar_sentry_destroy(this);
8844 if (ret == WEOF)
8845 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
8847 return ret;
8850 /* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WIH@Z */
8851 /* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_K_J@Z */
8852 /* ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGIH@Z */
8853 /* ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_K_J@Z */
8854 static basic_istream_wchar* basic_istream_wchar__Read_s(basic_istream_wchar *this, wchar_t *str, MSVCP_size_t size, streamsize count)
8856 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8857 IOSB_iostate state = IOSTATE_goodbit;
8859 TRACE("(%p %p %lu %ld)\n", this, str, size, count);
8861 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8862 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8864 this->count = basic_streambuf_wchar__Sgetn_s(strbuf, str, size, count);
8865 if(this->count != count)
8866 state |= IOSTATE_failbit | IOSTATE_eofbit;
8867 }else {
8868 this->count = 0;
8870 basic_istream_wchar_sentry_destroy(this);
8872 basic_ios_wchar_setstate(base, state);
8873 return this;
8876 /* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
8877 /* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
8878 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
8879 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
8880 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read, 12)
8881 basic_istream_wchar* __thiscall basic_istream_wchar_read(basic_istream_wchar *this, wchar_t *str, streamsize count)
8883 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8884 IOSB_iostate state = IOSTATE_goodbit;
8886 TRACE("(%p %p %ld)\n", this, str, count);
8888 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8889 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8891 this->count = basic_streambuf_wchar_sgetn(strbuf, str, count);
8892 if(this->count != count)
8893 state |= IOSTATE_failbit | IOSTATE_eofbit;
8894 }else {
8895 this->count = 0;
8897 basic_istream_wchar_sentry_destroy(this);
8899 basic_ios_wchar_setstate(base, state);
8900 return this;
8903 /* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
8904 /* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
8905 /* ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
8906 /* ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
8907 static streamsize basic_istream_wchar__Readsome_s(basic_istream_wchar *this, wchar_t *str, MSVCP_size_t size, streamsize count)
8909 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8910 IOSB_iostate state = IOSTATE_goodbit;
8912 TRACE("(%p %p %lu %ld)\n", this, str, size, count);
8914 this->count = 0;
8916 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8917 streamsize avail = basic_streambuf_wchar_in_avail(basic_ios_wchar_rdbuf_get(base));
8918 if(avail > count)
8919 avail = count;
8921 if(avail == -1)
8922 state |= IOSTATE_eofbit;
8923 else if(avail > 0)
8924 basic_istream_wchar__Read_s(this, str, size, avail);
8925 }else {
8926 state |= IOSTATE_failbit;
8928 basic_istream_wchar_sentry_destroy(this);
8930 basic_ios_wchar_setstate(base, state);
8931 return this->count;
8934 /* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
8935 /* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
8936 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
8937 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
8938 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_readsome, 12)
8939 streamsize __thiscall basic_istream_wchar_readsome(basic_istream_wchar *this, wchar_t *str, streamsize count)
8941 return basic_istream_wchar__Readsome_s(this, str, count, count);
8944 /* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */
8945 /* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */
8946 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
8947 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
8948 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_putback, 8)
8949 basic_istream_wchar* __thiscall basic_istream_wchar_putback(basic_istream_wchar *this, wchar_t ch)
8951 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8952 IOSB_iostate state = IOSTATE_goodbit;
8954 TRACE("(%p %c)\n", this, ch);
8956 this->count = 0;
8958 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8959 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8961 if(!ios_base_good(&base->base))
8962 state |= IOSTATE_failbit;
8963 else if(!strbuf || basic_streambuf_wchar_sputbackc(strbuf, ch)==WEOF)
8964 state |= IOSTATE_badbit;
8966 basic_istream_wchar_sentry_destroy(this);
8968 basic_ios_wchar_setstate(base, state);
8969 return this;
8972 /* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */
8973 /* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */
8974 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
8975 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
8976 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_unget, 4)
8977 basic_istream_wchar* __thiscall basic_istream_wchar_unget(basic_istream_wchar *this)
8979 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8980 IOSB_iostate state = IOSTATE_goodbit;
8982 TRACE("(%p)\n", this);
8984 this->count = 0;
8986 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8987 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8989 if(!ios_base_good(&base->base))
8990 state |= IOSTATE_failbit;
8991 else if(!strbuf || basic_streambuf_wchar_sungetc(strbuf)==WEOF)
8992 state |= IOSTATE_badbit;
8994 basic_istream_wchar_sentry_destroy(this);
8996 basic_ios_wchar_setstate(base, state);
8997 return this;
9000 /* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
9001 /* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
9002 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHXZ */
9003 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAHXZ */
9004 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_sync, 4)
9005 int __thiscall basic_istream_wchar_sync(basic_istream_wchar *this)
9007 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9008 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9010 TRACE("(%p)\n", this);
9012 if(!strbuf)
9013 return -1;
9015 if(basic_istream_wchar_sentry_create(this, TRUE)) {
9016 if(basic_streambuf_wchar_pubsync(strbuf) != -1) {
9017 basic_istream_wchar_sentry_destroy(this);
9018 return 0;
9021 basic_istream_wchar_sentry_destroy(this);
9023 basic_ios_wchar_setstate(base, IOSTATE_badbit);
9024 return -1;
9027 /* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */
9028 /* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
9029 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
9030 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
9031 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_tellg, 8)
9032 fpos_int* __thiscall basic_istream_wchar_tellg(basic_istream_wchar *this, fpos_int *ret)
9034 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9036 TRACE("(%p %p)\n", this, ret);
9038 if(ios_base_fail(&base->base)) {
9039 ret->off = -1;
9040 ret->pos = 0;
9041 ret->state = 0;
9042 return ret;
9045 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
9046 ret, 0, SEEKDIR_cur, OPENMODE_in);
9047 if(ret->off==-1 && ret->pos==0 && ret->state==0)
9048 basic_ios_wchar_setstate(base, IOSTATE_failbit);
9050 return ret;
9053 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */
9054 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */
9055 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
9056 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
9057 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg, 12)
9058 basic_istream_wchar* __thiscall basic_istream_wchar_seekg(basic_istream_wchar *this, streamoff off, int dir)
9060 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9062 TRACE("(%p %ld %d)\n", this, off, dir);
9064 if(!ios_base_fail(&base->base)) {
9065 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9066 fpos_int ret;
9068 basic_streambuf_wchar_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
9070 if(ret.off==-1 && ret.pos==0 && ret.state==0)
9071 basic_ios_wchar_setstate(base, IOSTATE_failbit);
9072 else
9073 basic_ios_wchar_clear(base, IOSTATE_goodbit);
9074 return this;
9075 }else
9076 basic_ios_wchar_clear(base, IOSTATE_goodbit);
9078 return this;
9081 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
9082 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
9083 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
9084 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
9085 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg_fpos, 28)
9086 basic_istream_wchar* __thiscall basic_istream_wchar_seekg_fpos(basic_istream_wchar *this, fpos_int pos)
9088 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9090 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
9092 if(!ios_base_fail(&base->base)) {
9093 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9094 fpos_int ret;
9096 basic_streambuf_wchar_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
9098 if(ret.off==-1 && ret.pos==0 && ret.state==0)
9099 basic_ios_wchar_setstate(base, IOSTATE_failbit);
9100 else
9101 basic_ios_wchar_clear(base, IOSTATE_goodbit);
9102 return this;
9103 }else
9104 basic_ios_wchar_clear(base, IOSTATE_goodbit);
9106 return this;
9109 static basic_istream_wchar* basic_istream_read_short(basic_istream_wchar *this, short *v, const num_get *numget)
9111 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9112 int state = IOSTATE_goodbit;
9114 TRACE("(%p %p)\n", this, v);
9116 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9117 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9118 istreambuf_iterator_wchar first={0}, last={0};
9119 LONG tmp;
9121 first.strbuf = strbuf;
9122 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, &tmp);
9124 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
9125 *v = tmp;
9126 else
9127 state |= IOSTATE_failbit;
9129 basic_istream_wchar_sentry_destroy(this);
9131 basic_ios_wchar_setstate(base, state);
9132 return this;
9135 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAF@Z */
9136 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAF@Z */
9137 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_short, 8)
9138 basic_istream_wchar* __thiscall basic_istream_wchar_read_short(basic_istream_wchar *this, short *v)
9140 return basic_istream_read_short(this, v, num_get_wchar_use_facet(
9141 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9144 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAF@Z */
9145 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAF@Z */
9146 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_short, 8)
9147 basic_istream_wchar* __thiscall basic_istream_short_read_short(basic_istream_wchar *this, short *v)
9149 return basic_istream_read_short(this, v, num_get_short_use_facet(
9150 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9153 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAG@Z */
9154 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAG@Z */
9155 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ushort, 8)
9156 basic_istream_wchar* __thiscall basic_istream_wchar_read_ushort(basic_istream_wchar *this, unsigned short *v)
9158 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9159 int state = IOSTATE_goodbit;
9161 TRACE("(%p %p)\n", this, v);
9163 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9164 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9165 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
9166 istreambuf_iterator_wchar first={0}, last={0};
9168 first.strbuf = strbuf;
9169 num_get_wchar_get_ushort(numget, &last, first, last, &base->base, &state, v);
9171 basic_istream_wchar_sentry_destroy(this);
9173 basic_ios_wchar_setstate(base, state);
9174 return this;
9177 static basic_istream_wchar* basic_istream_read_int(basic_istream_wchar *this, int *v, const num_get *numget)
9179 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9180 int state = IOSTATE_goodbit;
9182 TRACE("(%p %p)\n", this, v);
9184 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9185 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9186 istreambuf_iterator_wchar first={0}, last={0};
9188 first.strbuf = strbuf;
9189 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v);
9191 basic_istream_wchar_sentry_destroy(this);
9193 basic_ios_wchar_setstate(base, state);
9194 return this;
9197 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAH@Z */
9198 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAH@Z */
9199 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int, 8)
9200 basic_istream_wchar* __thiscall basic_istream_wchar_read_int(basic_istream_wchar *this, int *v)
9202 return basic_istream_read_int(this, v, num_get_wchar_use_facet(
9203 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9206 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAH@Z */
9207 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAH@Z */
9208 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int, 8)
9209 basic_istream_wchar* __thiscall basic_istream_short_read_int(basic_istream_wchar *this, int *v)
9211 return basic_istream_read_int(this, v, num_get_short_use_facet(
9212 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9215 static basic_istream_wchar* basic_istream_read_uint(basic_istream_wchar *this, unsigned int *v, const num_get *numget)
9217 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9218 int state = IOSTATE_goodbit;
9220 TRACE("(%p %p)\n", this, v);
9222 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9223 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9224 istreambuf_iterator_wchar first={0}, last={0};
9226 first.strbuf = strbuf;
9227 num_get_wchar_get_uint(numget, &last, first, last, &base->base, &state, v);
9229 basic_istream_wchar_sentry_destroy(this);
9231 basic_ios_wchar_setstate(base, state);
9232 return this;
9235 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAI@Z */
9236 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAI@Z */
9237 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint, 8)
9238 basic_istream_wchar* __thiscall basic_istream_wchar_read_uint(basic_istream_wchar *this, unsigned int *v)
9240 return basic_istream_read_uint(this, v, num_get_wchar_use_facet(
9241 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9244 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAI@Z */
9245 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAI@Z */
9246 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint, 8)
9247 basic_istream_wchar* __thiscall basic_istream_short_read_uint(basic_istream_wchar *this, unsigned int *v)
9249 return basic_istream_read_uint(this, v, num_get_short_use_facet(
9250 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9253 static basic_istream_wchar* basic_istream_read_long(basic_istream_wchar *this, LONG *v, const num_get *numget)
9255 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9256 int state = IOSTATE_goodbit;
9258 TRACE("(%p %p)\n", this, v);
9260 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9261 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9262 istreambuf_iterator_wchar first={0}, last={0};
9264 first.strbuf = strbuf;
9265 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v);
9267 basic_istream_wchar_sentry_destroy(this);
9269 basic_ios_wchar_setstate(base, state);
9270 return this;
9273 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z */
9274 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z */
9275 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_long, 8)
9276 basic_istream_wchar* __thiscall basic_istream_wchar_read_long(basic_istream_wchar *this, LONG *v)
9278 return basic_istream_read_long(this, v, num_get_wchar_use_facet(
9279 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9282 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z */
9283 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z */
9284 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_long, 8)
9285 basic_istream_wchar* __thiscall basic_istream_short_read_long(basic_istream_wchar *this, LONG *v)
9287 return basic_istream_read_long(this, v, num_get_short_use_facet(
9288 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9291 static basic_istream_wchar* basic_istream_read_ulong(basic_istream_wchar *this, ULONG *v, const num_get *numget)
9293 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9294 int state = IOSTATE_goodbit;
9296 TRACE("(%p %p)\n", this, v);
9298 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9299 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9300 istreambuf_iterator_wchar first={0}, last={0};
9302 first.strbuf = strbuf;
9303 num_get_wchar_get_ulong(numget, &last, first, last, &base->base, &state, v);
9305 basic_istream_wchar_sentry_destroy(this);
9307 basic_ios_wchar_setstate(base, state);
9308 return this;
9311 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAK@Z */
9312 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAK@Z */
9313 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ulong, 8)
9314 basic_istream_wchar* __thiscall basic_istream_wchar_read_ulong(basic_istream_wchar *this, ULONG *v)
9316 return basic_istream_read_ulong(this, v, num_get_wchar_use_facet(
9317 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9320 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAK@Z */
9321 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAK@Z */
9322 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ulong, 8)
9323 basic_istream_wchar* __thiscall basic_istream_short_read_ulong(basic_istream_wchar *this, ULONG *v)
9325 return basic_istream_read_ulong(this, v, num_get_short_use_facet(
9326 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9329 static basic_istream_wchar* basic_istream_read_float(basic_istream_wchar *this, float *v, const num_get *numget)
9331 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9332 int state = IOSTATE_goodbit;
9334 TRACE("(%p %p)\n", this, v);
9336 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9337 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9338 istreambuf_iterator_wchar first={0}, last={0};
9340 first.strbuf = strbuf;
9341 num_get_wchar_get_float(numget, &last, first, last, &base->base, &state, v);
9343 basic_istream_wchar_sentry_destroy(this);
9345 basic_ios_wchar_setstate(base, state);
9346 return this;
9349 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAM@Z */
9350 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAM@Z */
9351 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_float, 8)
9352 basic_istream_wchar* __thiscall basic_istream_wchar_read_float(basic_istream_wchar *this, float *v)
9354 return basic_istream_read_float(this, v, num_get_wchar_use_facet(
9355 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9358 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAM@Z */
9359 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAM@Z */
9360 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_float, 8)
9361 basic_istream_wchar* __thiscall basic_istream_short_read_float(basic_istream_wchar *this, float *v)
9363 return basic_istream_read_float(this, v, num_get_short_use_facet(
9364 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9367 static basic_istream_wchar* basic_istream_read_double(basic_istream_wchar *this, double *v, const num_get *numget)
9369 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9370 int state = IOSTATE_goodbit;
9372 TRACE("(%p %p)\n", this, v);
9374 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9375 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9376 istreambuf_iterator_wchar first={0}, last={0};
9378 first.strbuf = strbuf;
9379 num_get_wchar_get_double(numget, &last, first, last, &base->base, &state, v);
9381 basic_istream_wchar_sentry_destroy(this);
9383 basic_ios_wchar_setstate(base, state);
9384 return this;
9387 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAN@Z */
9388 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAN@Z */
9389 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_double, 8)
9390 basic_istream_wchar* __thiscall basic_istream_wchar_read_double(basic_istream_wchar *this, double *v)
9392 return basic_istream_read_double(this, v, num_get_wchar_use_facet(
9393 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9396 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAN@Z */
9397 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAN@Z */
9398 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_double, 8)
9399 basic_istream_wchar* __thiscall basic_istream_short_read_double(basic_istream_wchar *this, double *v)
9401 return basic_istream_read_double(this, v, num_get_short_use_facet(
9402 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9405 static basic_istream_wchar* basic_istream_read_ldouble(basic_istream_wchar *this, double *v, const num_get *numget)
9407 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9408 int state = IOSTATE_goodbit;
9410 TRACE("(%p %p)\n", this, v);
9412 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9413 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9414 istreambuf_iterator_wchar first={0}, last={0};
9416 first.strbuf = strbuf;
9417 num_get_wchar_get_ldouble(numget, &last, first, last, &base->base, &state, v);
9419 basic_istream_wchar_sentry_destroy(this);
9421 basic_ios_wchar_setstate(base, state);
9422 return this;
9425 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAO@Z */
9426 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAO@Z */
9427 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ldouble, 8)
9428 basic_istream_wchar* __thiscall basic_istream_wchar_read_ldouble(basic_istream_wchar *this, double *v)
9430 return basic_istream_read_ldouble(this, v, num_get_wchar_use_facet(
9431 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9434 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAO@Z */
9435 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAO@Z */
9436 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ldouble, 8)
9437 basic_istream_wchar* __thiscall basic_istream_short_read_ldouble(basic_istream_wchar *this, double *v)
9439 return basic_istream_read_ldouble(this, v, num_get_short_use_facet(
9440 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9443 static basic_istream_wchar* basic_istream_read_ptr(basic_istream_wchar *this, void **v, const num_get *numget)
9445 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9446 int state = IOSTATE_goodbit;
9448 TRACE("(%p %p)\n", this, v);
9450 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9451 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9452 istreambuf_iterator_wchar first={0}, last={0};
9454 first.strbuf = strbuf;
9455 num_get_wchar_get_void(numget, &last, first, last, &base->base, &state, v);
9457 basic_istream_wchar_sentry_destroy(this);
9459 basic_ios_wchar_setstate(base, state);
9460 return this;
9463 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAPAX@Z */
9464 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
9465 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ptr, 8)
9466 basic_istream_wchar* __thiscall basic_istream_wchar_read_ptr(basic_istream_wchar *this, void **v)
9468 return basic_istream_read_ptr(this, v, num_get_wchar_use_facet(
9469 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9472 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAPAX@Z */
9473 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
9474 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ptr, 8)
9475 basic_istream_wchar* __thiscall basic_istream_short_read_ptr(basic_istream_wchar *this, void **v)
9477 return basic_istream_read_ptr(this, v, num_get_short_use_facet(
9478 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9481 static basic_istream_wchar* basic_istream_read_int64(basic_istream_wchar *this, __int64 *v, const num_get *numget)
9483 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9484 int state = IOSTATE_goodbit;
9486 TRACE("(%p %p)\n", this, v);
9488 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9489 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9490 istreambuf_iterator_wchar first={0}, last={0};
9492 first.strbuf = strbuf;
9493 num_get_wchar_get_int64(numget, &last, first, last, &base->base, &state, v);
9495 basic_istream_wchar_sentry_destroy(this);
9497 basic_ios_wchar_setstate(base, state);
9498 return this;
9501 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_J@Z */
9502 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_J@Z */
9503 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int64, 8)
9504 basic_istream_wchar* __thiscall basic_istream_wchar_read_int64(basic_istream_wchar *this, __int64 *v)
9506 return basic_istream_read_int64(this, v, num_get_wchar_use_facet(
9507 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9510 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_J@Z */
9511 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_J@Z */
9512 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int64, 8)
9513 basic_istream_wchar* __thiscall basic_istream_short_read_int64(basic_istream_wchar *this, __int64 *v)
9515 return basic_istream_read_int64(this, v, num_get_short_use_facet(
9516 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9519 static basic_istream_wchar* basic_istream_read_uint64(basic_istream_wchar *this, unsigned __int64 *v, const num_get *numget)
9521 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9522 int state = IOSTATE_goodbit;
9524 TRACE("(%p %p)\n", this, v);
9526 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9527 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9528 istreambuf_iterator_wchar first={0}, last={0};
9530 first.strbuf = strbuf;
9531 num_get_wchar_get_uint64(numget, &last, first, last, &base->base, &state, v);
9533 basic_istream_wchar_sentry_destroy(this);
9535 basic_ios_wchar_setstate(base, state);
9536 return this;
9539 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_K@Z */
9540 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_K@Z */
9541 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint64, 8)
9542 basic_istream_wchar* __thiscall basic_istream_wchar_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
9544 return basic_istream_read_uint64(this, v, num_get_wchar_use_facet(
9545 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9548 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_K@Z */
9549 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_K@Z */
9550 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint64, 8)
9551 basic_istream_wchar* __thiscall basic_istream_short_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
9553 return basic_istream_read_uint64(this, v, num_get_short_use_facet(
9554 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9557 static basic_istream_wchar* basic_istream_read_bool(basic_istream_wchar *this, MSVCP_bool *v, const num_get *numget)
9559 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9560 int state = IOSTATE_goodbit;
9562 TRACE("(%p %p)\n", this, v);
9564 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9565 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9566 istreambuf_iterator_wchar first={0}, last={0};
9568 first.strbuf = strbuf;
9569 num_get_wchar_get_bool(numget, &last, first, last, &base->base, &state, v);
9571 basic_istream_wchar_sentry_destroy(this);
9573 basic_ios_wchar_setstate(base, state);
9574 return this;
9577 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_N@Z */
9578 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_N@Z */
9579 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_bool, 8)
9580 basic_istream_wchar* __thiscall basic_istream_wchar_read_bool(basic_istream_wchar *this, MSVCP_bool *v)
9582 return basic_istream_read_bool(this, v, num_get_wchar_use_facet(
9583 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9586 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_N@Z */
9587 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_N@Z */
9588 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_bool, 8)
9589 basic_istream_wchar* __thiscall basic_istream_short_read_bool(basic_istream_wchar *this, MSVCP_bool *v)
9591 return basic_istream_read_bool(this, v, num_get_short_use_facet(
9592 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9595 /* ??$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 */
9596 /* ??$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 */
9597 /* ??$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 */
9598 /* ??$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 */
9599 basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr_delim(
9600 basic_istream_wchar *istream, basic_string_wchar *str, wchar_t delim)
9602 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
9603 IOSB_iostate state = IOSTATE_goodbit;
9604 int c = delim;
9606 TRACE("(%p %p %c)\n", istream, str, delim);
9608 if(basic_istream_wchar_sentry_create(istream, TRUE)) {
9609 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9610 MSVCP_basic_string_wchar_clear(str);
9612 c = basic_streambuf_wchar_sgetc(strbuf);
9613 for(; c!=delim && c!=WEOF; c = basic_streambuf_wchar_snextc(strbuf))
9614 MSVCP_basic_string_wchar_append_ch(str, c);
9615 if(c==delim) basic_streambuf_wchar_sbumpc(strbuf);
9616 else if(c==WEOF) state |= IOSTATE_eofbit;
9618 if(!MSVCP_basic_string_wchar_length(str) && c!=delim) state |= IOSTATE_failbit;
9620 basic_istream_wchar_sentry_destroy(istream);
9622 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream), state);
9623 return istream;
9626 /* ??$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 */
9627 /* ??$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 */
9628 /* ??$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 */
9629 /* ??$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 */
9630 basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr(
9631 basic_istream_wchar *istream, basic_string_wchar *str)
9633 return basic_istream_wchar_getline_bstr_delim(istream, str, '\n');
9636 static basic_istream_wchar* basic_istream_read_bstr(basic_istream_wchar *istream,
9637 basic_string_wchar *str, const ctype_wchar *ctype)
9639 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
9640 IOSB_iostate state = IOSTATE_failbit;
9641 int c = '\n';
9643 TRACE("(%p %p)\n", istream, str);
9645 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
9646 MSVCP_size_t count = ios_base_width_get(&base->base);
9648 if(!count)
9649 count = -1;
9651 MSVCP_basic_string_wchar_clear(str);
9653 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
9654 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
9655 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base)), count--) {
9656 state = IOSTATE_goodbit;
9657 MSVCP_basic_string_wchar_append_ch(str, c);
9660 basic_istream_wchar_sentry_destroy(istream);
9662 ios_base_width_set(&base->base, 0);
9663 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9664 return istream;
9667 /* ??$?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 */
9668 /* ??$?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 */
9669 basic_istream_wchar* __cdecl basic_istream_wchar_read_bstr(
9670 basic_istream_wchar *istream, basic_string_wchar *str)
9672 return basic_istream_read_bstr(istream, str, ctype_wchar_use_facet(
9673 basic_istream_wchar_get_basic_ios(istream)->strbuf->loc));
9676 /* ??$?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 */
9677 /* ??$?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 */
9678 basic_istream_wchar* __cdecl basic_istream_short_read_bstr(
9679 basic_istream_wchar *istream, basic_string_wchar *str)
9681 return basic_istream_read_bstr(istream, str, ctype_short_use_facet(
9682 basic_istream_wchar_get_basic_ios(istream)->strbuf->loc));
9685 static basic_istream_wchar* basic_istream_read_str(basic_istream_wchar *istream, wchar_t *str, const ctype_wchar *ctype)
9687 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
9688 IOSB_iostate state = IOSTATE_failbit;
9689 unsigned short c = '\n';
9691 TRACE("(%p %p)\n", istream, str);
9693 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
9694 MSVCP_size_t count = ios_base_width_get(&base->base)-1;
9696 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
9697 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
9698 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base)), count--) {
9699 state = IOSTATE_goodbit;
9700 *str++ = c;
9703 basic_istream_wchar_sentry_destroy(istream);
9705 *str = 0;
9706 ios_base_width_set(&base->base, 0);
9707 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9708 return istream;
9711 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@PA_W@Z */
9712 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@PEA_W@Z */
9713 basic_istream_wchar* __cdecl basic_istream_wchar_read_str(basic_istream_wchar *istream, wchar_t *str)
9715 return basic_istream_read_str(istream, str, ctype_wchar_use_facet(
9716 basic_istream_wchar_get_basic_ios(istream)->strbuf->loc));
9719 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@PAG@Z */
9720 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@PEAG@Z */
9721 basic_istream_wchar* __cdecl basic_istream_short_read_str(basic_istream_wchar *istream, wchar_t *str)
9723 return basic_istream_read_str(istream, str, ctype_short_use_facet(
9724 basic_istream_wchar_get_basic_ios(istream)->strbuf->loc));
9727 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AA_W@Z */
9728 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEA_W@Z */
9729 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAG@Z */
9730 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAG@Z */
9731 basic_istream_wchar* __cdecl basic_istream_wchar_read_ch(basic_istream_wchar *istream, wchar_t *ch)
9733 IOSB_iostate state = IOSTATE_failbit;
9734 unsigned short c = 0;
9736 TRACE("(%p %p)\n", istream, ch);
9738 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
9739 c = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(
9740 basic_istream_wchar_get_basic_ios(istream)));
9741 if(c != WEOF) {
9742 state = IOSTATE_goodbit;
9743 *ch = c;
9746 basic_istream_wchar_sentry_destroy(istream);
9748 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream),
9749 state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9750 return istream;
9753 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
9754 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
9755 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
9756 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
9757 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_streambuf, 8)
9758 basic_istream_wchar* __thiscall basic_istream_wchar_read_streambuf(
9759 basic_istream_wchar *this, basic_streambuf_wchar *streambuf)
9761 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9762 IOSB_iostate state = IOSTATE_failbit;
9763 unsigned short c = '\n';
9765 TRACE("(%p %p)\n", this, streambuf);
9767 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9768 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base)); c!=WEOF;
9769 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base))) {
9770 state = IOSTATE_goodbit;
9771 if(basic_streambuf_wchar_sputc(streambuf, c) == WEOF)
9772 break;
9775 basic_istream_wchar_sentry_destroy(this);
9777 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9778 return this;
9781 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
9782 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
9783 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
9784 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
9785 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func, 8)
9786 basic_istream_wchar* __thiscall basic_istream_wchar_read_func(basic_istream_wchar *this,
9787 basic_istream_wchar* (__cdecl *pfunc)(basic_istream_wchar*))
9789 TRACE("(%p %p)\n", this, pfunc);
9790 pfunc(this);
9791 return this;
9794 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AAV21@@Z@Z */
9795 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AEAV21@@Z@Z */
9796 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
9797 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
9798 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func_basic_ios, 8)
9799 basic_istream_wchar* __thiscall basic_istream_wchar_read_func_basic_ios(basic_istream_wchar *this,
9800 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
9802 TRACE("(%p %p)\n", this, pfunc);
9803 pfunc(basic_istream_wchar_get_basic_ios(this));
9804 return this;
9807 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
9808 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
9809 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
9810 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
9811 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func_ios_base, 8)
9812 basic_istream_wchar* __thiscall basic_istream_wchar_read_func_ios_base(
9813 basic_istream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
9815 TRACE("(%p %p)\n", this, pfunc);
9816 pfunc(&basic_istream_wchar_get_basic_ios(this)->base);
9817 return this;
9820 static inline basic_ios_char* basic_iostream_char_to_basic_ios(basic_iostream_char *ptr)
9822 return (basic_ios_char*)((char*)ptr+basic_iostream_char_vbtable1[1]);
9825 static inline basic_iostream_char* basic_iostream_char_from_basic_ios(basic_ios_char *ptr)
9827 return (basic_iostream_char*)((char*)ptr-basic_iostream_char_vbtable1[1]);
9830 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
9831 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
9832 DEFINE_THISCALL_WRAPPER(basic_iostream_char_ctor, 12)
9833 basic_iostream_char* __thiscall basic_iostream_char_ctor(basic_iostream_char *this, basic_streambuf_char *strbuf, MSVCP_bool virt_init)
9835 basic_ios_char *basic_ios;
9837 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
9839 if(virt_init) {
9840 this->base1.vbtable = basic_iostream_char_vbtable1;
9841 this->base2.vbtable = basic_iostream_char_vbtable2;
9842 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
9843 basic_ios_char_ctor(basic_ios);
9844 }else {
9845 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
9848 basic_ios->base.vtable = &MSVCP_basic_iostream_char_vtable;
9850 basic_istream_char_ctor(&this->base1, strbuf, FALSE, FALSE);
9851 basic_ostream_char_ctor_uninitialized(&this->base2, 0, FALSE, FALSE);
9852 return this;
9855 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
9856 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
9857 DEFINE_THISCALL_WRAPPER(basic_iostream_char_dtor, 4)
9858 void __thiscall basic_iostream_char_dtor(basic_ios_char *base)
9860 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
9862 TRACE("(%p)\n", this);
9863 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base2));
9864 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base1));
9867 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
9868 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
9869 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vbase_dtor, 4)
9870 void __thiscall basic_iostream_char_vbase_dtor(basic_iostream_char *this)
9872 TRACE("(%p)\n", this);
9873 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(this));
9874 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base1));
9877 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vector_dtor, 8)
9878 basic_iostream_char* __thiscall basic_iostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
9880 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
9882 TRACE("(%p %x)\n", this, flags);
9884 if(flags & 2) {
9885 /* we have an array, with the number of elements stored before the first object */
9886 INT_PTR i, *ptr = (INT_PTR *)this-1;
9888 for(i=*ptr-1; i>=0; i--)
9889 basic_iostream_char_vbase_dtor(this+i);
9890 MSVCRT_operator_delete(ptr);
9891 } else {
9892 basic_iostream_char_vbase_dtor(this);
9893 if(flags & 1)
9894 MSVCRT_operator_delete(this);
9897 return this;
9900 static inline basic_ios_wchar* basic_iostream_wchar_to_basic_ios(basic_iostream_wchar *ptr)
9902 return (basic_ios_wchar*)((char*)ptr+basic_iostream_wchar_vbtable1[1]);
9905 static inline basic_iostream_wchar* basic_iostream_wchar_from_basic_ios(basic_ios_wchar *ptr)
9907 return (basic_iostream_wchar*)((char*)ptr-basic_iostream_wchar_vbtable1[1]);
9910 /* ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
9911 /* ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
9912 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_ctor, 12)
9913 basic_iostream_wchar* __thiscall basic_iostream_wchar_ctor(basic_iostream_wchar *this,
9914 basic_streambuf_wchar *strbuf, MSVCP_bool virt_init)
9916 basic_ios_wchar *basic_ios;
9918 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
9920 if(virt_init) {
9921 this->base1.vbtable = basic_iostream_wchar_vbtable1;
9922 this->base2.vbtable = basic_iostream_wchar_vbtable2;
9923 basic_ios = basic_istream_wchar_get_basic_ios(&this->base1);
9924 basic_ios_wchar_ctor(basic_ios);
9925 }else {
9926 basic_ios = basic_istream_wchar_get_basic_ios(&this->base1);
9929 basic_istream_wchar_ctor(&this->base1, strbuf, FALSE, FALSE);
9930 basic_ostream_wchar_ctor_uninitialized(&this->base2, 0, FALSE, FALSE);
9932 basic_ios->base.vtable = &MSVCP_basic_iostream_wchar_vtable;
9933 return this;
9936 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
9937 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
9938 DEFINE_THISCALL_WRAPPER(basic_iostream_short_ctor, 12)
9939 basic_iostream_wchar* __thiscall basic_iostream_short_ctor(basic_iostream_wchar *this,
9940 basic_streambuf_wchar *strbuf, MSVCP_bool virt_init)
9942 basic_iostream_wchar_ctor(this, strbuf, virt_init);
9943 basic_istream_wchar_get_basic_ios(&this->base1)->base.vtable = &MSVCP_basic_iostream_short_vtable;
9944 return this;
9947 /* ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
9948 /* ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
9949 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
9950 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
9951 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_dtor, 4)
9952 void __thiscall basic_iostream_wchar_dtor(basic_ios_wchar *base)
9954 basic_iostream_wchar *this = basic_iostream_wchar_from_basic_ios(base);
9956 TRACE("(%p)\n", this);
9957 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base2));
9958 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base1));
9961 /* ??_D?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
9962 /* ??_D?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
9963 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9964 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9965 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_vbase_dtor, 4)
9966 void __thiscall basic_iostream_wchar_vbase_dtor(basic_iostream_wchar *this)
9968 TRACE("(%p)\n", this);
9969 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(this));
9970 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base1));
9973 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_vector_dtor, 8)
9974 basic_iostream_wchar* __thiscall basic_iostream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
9976 basic_iostream_wchar *this = basic_iostream_wchar_from_basic_ios(base);
9978 TRACE("(%p %x)\n", this, flags);
9980 if(flags & 2) {
9981 /* we have an array, with the number of elements stored before the first object */
9982 INT_PTR i, *ptr = (INT_PTR *)this-1;
9984 for(i=*ptr-1; i>=0; i--)
9985 basic_iostream_wchar_vbase_dtor(this+i);
9986 MSVCRT_operator_delete(ptr);
9987 } else {
9988 basic_iostream_wchar_vbase_dtor(this);
9989 if(flags & 1)
9990 MSVCRT_operator_delete(this);
9993 return this;
9996 static inline basic_ios_char* basic_ofstream_char_to_basic_ios(basic_ofstream_char *ptr)
9998 return (basic_ios_char*)((char*)ptr+basic_ofstream_char_vbtable[1]);
10001 static inline basic_ofstream_char* basic_ofstream_char_from_basic_ios(basic_ios_char *ptr)
10003 return (basic_ofstream_char*)((char*)ptr-basic_ofstream_char_vbtable[1]);
10006 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
10007 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
10008 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor, 8)
10009 basic_ofstream_char* __thiscall basic_ofstream_char_ctor(basic_ofstream_char *this, MSVCP_bool virt_init)
10011 basic_ios_char *basic_ios;
10013 TRACE("(%p %d)\n", this, virt_init);
10015 if(virt_init) {
10016 this->base.vbtable = basic_ofstream_char_vbtable;
10017 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10018 basic_ios_char_ctor(basic_ios);
10019 }else {
10020 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10023 basic_filebuf_char_ctor(&this->filebuf);
10024 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10025 basic_ios->base.vtable = &MSVCP_basic_ofstream_char_vtable;
10026 return this;
10029 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
10030 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10031 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_file, 12)
10032 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_file(
10033 basic_ofstream_char *this, FILE *file, MSVCP_bool virt_init)
10035 basic_ios_char *basic_ios;
10037 TRACE("(%p %p %d)\n", this, file, virt_init);
10039 if(virt_init) {
10040 this->base.vbtable = basic_ofstream_char_vbtable;
10041 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10042 basic_ios_char_ctor(basic_ios);
10043 }else {
10044 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10047 basic_filebuf_char_ctor_file(&this->filebuf, file);
10048 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10049 basic_ios->base.vtable = &MSVCP_basic_ofstream_char_vtable;
10050 return this;
10053 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
10054 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
10055 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name, 20)
10056 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name(basic_ofstream_char *this,
10057 const char *name, int mode, int prot, MSVCP_bool virt_init)
10059 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
10061 basic_ofstream_char_ctor(this, virt_init);
10063 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10064 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10065 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10067 return this;
10070 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
10071 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
10072 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_dtor, 4)
10073 void __thiscall basic_ofstream_char_dtor(basic_ios_char *base)
10075 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
10077 TRACE("(%p)\n", this);
10079 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
10080 basic_filebuf_char_dtor(&this->filebuf);
10083 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10084 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10085 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vbase_dtor, 4)
10086 void __thiscall basic_ofstream_char_vbase_dtor(basic_ofstream_char *this)
10088 TRACE("(%p)\n", this);
10090 basic_ofstream_char_dtor(basic_ofstream_char_to_basic_ios(this));
10091 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
10094 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vector_dtor, 8)
10095 basic_ofstream_char* __thiscall basic_ofstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
10097 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
10099 TRACE("(%p %x)\n", this, flags);
10101 if(flags & 2) {
10102 /* we have an array, with the number of elements stored before the first object */
10103 INT_PTR i, *ptr = (INT_PTR *)this-1;
10105 for(i=*ptr-1; i>=0; i--)
10106 basic_ofstream_char_vbase_dtor(this+i);
10107 MSVCRT_operator_delete(ptr);
10108 } else {
10109 basic_ofstream_char_vbase_dtor(this);
10110 if(flags & 1)
10111 MSVCRT_operator_delete(this);
10114 return this;
10117 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10118 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10119 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_close, 4)
10120 void __thiscall basic_ofstream_char_close(basic_ofstream_char *this)
10122 TRACE("(%p)\n", this);
10124 if(!basic_filebuf_char_close(&this->filebuf)) {
10125 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10126 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10130 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
10131 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
10132 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_is_open, 4)
10133 MSVCP_bool __thiscall basic_ofstream_char_is_open(const basic_ofstream_char *this)
10135 TRACE("(%p)\n", this);
10136 return basic_filebuf_char_is_open(&this->filebuf);
10139 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
10140 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
10141 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open, 16)
10142 void __thiscall basic_ofstream_char_open(basic_ofstream_char *this,
10143 const char *name, int mode, int prot)
10145 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
10147 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10148 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10149 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10153 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
10154 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
10155 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_old, 12)
10156 void __thiscall basic_ofstream_char_open_old(basic_ofstream_char *this,
10157 const char *name, unsigned int mode)
10159 basic_ofstream_char_open(this, name, mode, _SH_DENYNO);
10162 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10163 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10164 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_rdbuf, 4)
10165 basic_filebuf_char* __thiscall basic_ofstream_char_rdbuf(const basic_ofstream_char *this)
10167 TRACE("(%p)\n", this);
10168 return (basic_filebuf_char*)&this->filebuf;
10171 static inline basic_ios_wchar* basic_ofstream_wchar_to_basic_ios(basic_ofstream_wchar *ptr)
10173 return (basic_ios_wchar*)((char*)ptr+basic_ofstream_wchar_vbtable[1]);
10176 static inline basic_ofstream_wchar* basic_ofstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
10178 return (basic_ofstream_wchar*)((char*)ptr-basic_ofstream_wchar_vbtable[1]);
10181 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
10182 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
10183 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor, 8)
10184 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor(basic_ofstream_wchar *this, MSVCP_bool virt_init)
10186 basic_ios_wchar *basic_ios;
10188 TRACE("(%p %d)\n", this, virt_init);
10190 if(virt_init) {
10191 this->base.vbtable = basic_ofstream_wchar_vbtable;
10192 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10193 basic_ios_wchar_ctor(basic_ios);
10194 }else {
10195 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10198 basic_filebuf_wchar_ctor(&this->filebuf);
10199 basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10200 basic_ios->base.vtable = &MSVCP_basic_ofstream_wchar_vtable;
10201 return this;
10204 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
10205 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
10206 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor, 8)
10207 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor(basic_ofstream_wchar *this, MSVCP_bool virt_init)
10209 basic_ofstream_wchar_ctor(this, virt_init);
10210 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
10211 return this;
10214 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
10215 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10216 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_file, 12)
10217 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_file(
10218 basic_ofstream_wchar *this, FILE *file, MSVCP_bool virt_init)
10220 basic_ios_wchar *basic_ios;
10222 TRACE("(%p %p %d)\n", this, file, virt_init);
10224 if(virt_init) {
10225 this->base.vbtable = basic_ofstream_wchar_vbtable;
10226 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10227 basic_ios_wchar_ctor(basic_ios);
10228 }else {
10229 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10232 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
10233 basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10234 basic_ios->base.vtable = &MSVCP_basic_ofstream_wchar_vtable;
10235 return this;
10238 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
10239 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10240 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_file, 12)
10241 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_file(
10242 basic_ofstream_wchar *this, FILE *file, MSVCP_bool virt_init)
10244 basic_ofstream_wchar_ctor_file(this, file, virt_init);
10245 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
10246 return this;
10249 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDHH@Z */
10250 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDHH@Z */
10251 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_name, 20)
10252 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_name(basic_ofstream_wchar *this,
10253 const char *name, int mode, int prot, MSVCP_bool virt_init)
10255 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
10257 basic_ofstream_wchar_ctor(this, virt_init);
10259 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10260 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10261 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10263 return this;
10266 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBDHH@Z */
10267 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDHH@Z */
10268 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_name, 20)
10269 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_name(basic_ofstream_wchar *this,
10270 const char *name, int mode, int prot, MSVCP_bool virt_init)
10272 basic_ofstream_wchar_ctor_name(this, name, mode, prot, virt_init);
10273 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
10274 return this;
10277 /* ??1?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
10278 /* ??1?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
10279 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
10280 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
10281 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_dtor, 4)
10282 void __thiscall basic_ofstream_wchar_dtor(basic_ios_wchar *base)
10284 basic_ofstream_wchar *this = basic_ofstream_wchar_from_basic_ios(base);
10286 TRACE("(%p)\n", this);
10288 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base));
10289 basic_filebuf_wchar_dtor(&this->filebuf);
10292 /* ??_D?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
10293 /* ??_D?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
10294 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10295 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10296 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_vbase_dtor, 4)
10297 void __thiscall basic_ofstream_wchar_vbase_dtor(basic_ofstream_wchar *this)
10299 TRACE("(%p)\n", this);
10301 basic_ofstream_wchar_dtor(basic_ofstream_wchar_to_basic_ios(this));
10302 basic_ios_wchar_dtor(basic_ostream_wchar_get_basic_ios(&this->base));
10305 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_vector_dtor, 8)
10306 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
10308 basic_ofstream_wchar *this = basic_ofstream_wchar_from_basic_ios(base);
10310 TRACE("(%p %x)\n", this, flags);
10312 if(flags & 2) {
10313 /* we have an array, with the number of elements stored before the first object */
10314 INT_PTR i, *ptr = (INT_PTR *)this-1;
10316 for(i=*ptr-1; i>=0; i--)
10317 basic_ofstream_wchar_vbase_dtor(this+i);
10318 MSVCRT_operator_delete(ptr);
10319 } else {
10320 basic_ofstream_wchar_vbase_dtor(this);
10321 if(flags & 1)
10322 MSVCRT_operator_delete(this);
10325 return this;
10328 /* ?close@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
10329 /* ?close@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
10330 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10331 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10332 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_close, 4)
10333 void __thiscall basic_ofstream_wchar_close(basic_ofstream_wchar *this)
10335 TRACE("(%p)\n", this);
10337 if(!basic_filebuf_wchar_close(&this->filebuf)) {
10338 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10339 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10343 /* ?is_open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
10344 /* ?is_open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
10345 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
10346 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
10347 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_is_open, 4)
10348 MSVCP_bool __thiscall basic_ofstream_wchar_is_open(const basic_ofstream_wchar *this)
10350 TRACE("(%p)\n", this);
10351 return basic_filebuf_wchar_is_open(&this->filebuf);
10354 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
10355 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
10356 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
10357 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
10358 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open, 16)
10359 void __thiscall basic_ofstream_wchar_open(basic_ofstream_wchar *this,
10360 const char *name, int mode, int prot)
10362 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
10364 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10365 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10366 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10370 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
10371 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
10372 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
10373 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
10374 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_old, 12)
10375 void __thiscall basic_ofstream_wchar_open_old(basic_ofstream_wchar *this,
10376 const char *name, unsigned int mode)
10378 basic_ofstream_wchar_open(this, name, mode, _SH_DENYNO);
10381 /* ?rdbuf@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
10382 /* ?rdbuf@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
10383 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
10384 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
10385 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_rdbuf, 4)
10386 basic_filebuf_wchar* __thiscall basic_ofstream_wchar_rdbuf(const basic_ofstream_wchar *this)
10388 TRACE("(%p)\n", this);
10389 return (basic_filebuf_wchar*)&this->filebuf;
10392 static inline basic_ios_char* basic_ifstream_char_to_basic_ios(basic_ifstream_char *ptr)
10394 return (basic_ios_char*)((char*)ptr+basic_ifstream_char_vbtable[1]);
10397 static inline basic_ifstream_char* basic_ifstream_char_from_basic_ios(basic_ios_char *ptr)
10399 return (basic_ifstream_char*)((char*)ptr-basic_ifstream_char_vbtable[1]);
10402 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
10403 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
10404 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor, 8)
10405 basic_ifstream_char* __thiscall basic_ifstream_char_ctor(basic_ifstream_char *this, MSVCP_bool virt_init)
10407 basic_ios_char *basic_ios;
10409 TRACE("(%p %d)\n", this, virt_init);
10411 if(virt_init) {
10412 this->base.vbtable = basic_ifstream_char_vbtable;
10413 basic_ios = basic_istream_char_get_basic_ios(&this->base);
10414 basic_ios_char_ctor(basic_ios);
10415 }else {
10416 basic_ios = basic_istream_char_get_basic_ios(&this->base);
10419 basic_filebuf_char_ctor(&this->filebuf);
10420 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10421 basic_ios->base.vtable = &MSVCP_basic_ifstream_char_vtable;
10422 return this;
10425 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
10426 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10427 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_file, 12)
10428 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_file(
10429 basic_ifstream_char *this, FILE *file, MSVCP_bool virt_init)
10431 basic_ios_char *basic_ios;
10433 TRACE("(%p %p %d)\n", this, file, virt_init);
10435 if(virt_init) {
10436 this->base.vbtable = basic_ifstream_char_vbtable;
10437 basic_ios = basic_istream_char_get_basic_ios(&this->base);
10438 basic_ios_char_ctor(basic_ios);
10439 }else {
10440 basic_ios = basic_istream_char_get_basic_ios(&this->base);
10443 basic_filebuf_char_ctor_file(&this->filebuf, file);
10444 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10445 basic_ios->base.vtable = &MSVCP_basic_ifstream_char_vtable;
10446 return this;
10449 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
10450 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
10451 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name, 20)
10452 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name(basic_ifstream_char *this,
10453 const char *name, int mode, int prot, MSVCP_bool virt_init)
10455 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
10457 basic_ifstream_char_ctor(this, virt_init);
10459 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10460 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
10461 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10463 return this;
10466 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
10467 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
10468 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_dtor, 4)
10469 void __thiscall basic_ifstream_char_dtor(basic_ios_char *base)
10471 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
10473 TRACE("(%p)\n", this);
10475 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
10476 basic_filebuf_char_dtor(&this->filebuf);
10479 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10480 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10481 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vbase_dtor, 4)
10482 void __thiscall basic_ifstream_char_vbase_dtor(basic_ifstream_char *this)
10484 TRACE("(%p)\n", this);
10486 basic_ifstream_char_dtor(basic_ifstream_char_to_basic_ios(this));
10487 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base));
10490 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vector_dtor, 8)
10491 basic_ifstream_char* __thiscall basic_ifstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
10493 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
10495 TRACE("(%p %x)\n", this, flags);
10497 if(flags & 2) {
10498 /* we have an array, with the number of elements stored before the first object */
10499 INT_PTR i, *ptr = (INT_PTR *)this-1;
10501 for(i=*ptr-1; i>=0; i--)
10502 basic_ifstream_char_vbase_dtor(this+i);
10503 MSVCRT_operator_delete(ptr);
10504 } else {
10505 basic_ifstream_char_vbase_dtor(this);
10506 if(flags & 1)
10507 MSVCRT_operator_delete(this);
10510 return this;
10513 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10514 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10515 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_close, 4)
10516 void __thiscall basic_ifstream_char_close(basic_ifstream_char *this)
10518 TRACE("(%p)\n", this);
10520 if(!basic_filebuf_char_close(&this->filebuf)) {
10521 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
10522 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10526 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
10527 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
10528 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_is_open, 4)
10529 MSVCP_bool __thiscall basic_ifstream_char_is_open(const basic_ifstream_char *this)
10531 TRACE("(%p)\n", this);
10532 return basic_filebuf_char_is_open(&this->filebuf);
10535 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
10536 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
10537 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open, 16)
10538 void __thiscall basic_ifstream_char_open(basic_ifstream_char *this,
10539 const char *name, int mode, int prot)
10541 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
10543 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10544 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
10545 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10549 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
10550 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
10551 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_old, 12)
10552 void __thiscall basic_ifstream_char_open_old(basic_ifstream_char *this,
10553 const char *name, unsigned int mode)
10555 basic_ifstream_char_open(this, name, mode, _SH_DENYNO);
10558 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10559 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10560 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_rdbuf, 4)
10561 basic_filebuf_char* __thiscall basic_ifstream_char_rdbuf(const basic_ifstream_char *this)
10563 TRACE("(%p)\n", this);
10564 return (basic_filebuf_char*)&this->filebuf;
10567 static inline basic_ios_wchar* basic_ifstream_wchar_to_basic_ios(basic_ifstream_wchar *ptr)
10569 return (basic_ios_wchar*)((char*)ptr+basic_ifstream_wchar_vbtable[1]);
10572 static inline basic_ifstream_wchar* basic_ifstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
10574 return (basic_ifstream_wchar*)((char*)ptr-basic_ifstream_wchar_vbtable[1]);
10577 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
10578 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
10579 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor, 8)
10580 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor(basic_ifstream_wchar *this, MSVCP_bool virt_init)
10582 basic_ios_wchar *basic_ios;
10584 TRACE("(%p %d)\n", this, virt_init);
10586 if(virt_init) {
10587 this->base.vbtable = basic_ifstream_wchar_vbtable;
10588 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10589 basic_ios_wchar_ctor(basic_ios);
10590 }else {
10591 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10594 basic_filebuf_wchar_ctor(&this->filebuf);
10595 basic_istream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10596 basic_ios->base.vtable = &MSVCP_basic_ifstream_wchar_vtable;
10597 return this;
10600 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
10601 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
10602 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor, 8)
10603 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor(basic_ifstream_wchar *this, MSVCP_bool virt_init)
10605 basic_ifstream_wchar_ctor(this, virt_init);
10606 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
10607 return this;
10610 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
10611 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10612 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_file, 12)
10613 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_file(
10614 basic_ifstream_wchar *this, FILE *file, MSVCP_bool virt_init)
10616 basic_ios_wchar *basic_ios;
10618 TRACE("(%p %p %d)\n", this, file, virt_init);
10620 if(virt_init) {
10621 this->base.vbtable = basic_ifstream_wchar_vbtable;
10622 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10623 basic_ios_wchar_ctor(basic_ios);
10624 }else {
10625 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10628 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
10629 basic_istream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10630 basic_ios->base.vtable = &MSVCP_basic_ifstream_wchar_vtable;
10631 return this;
10634 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
10635 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10636 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_file, 12)
10637 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_file(
10638 basic_ifstream_wchar *this, FILE *file, MSVCP_bool virt_init)
10640 basic_ifstream_wchar_ctor_file(this, file, virt_init);
10641 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
10642 return this;
10645 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDHH@Z */
10646 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDHH@Z */
10647 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name, 20)
10648 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name(basic_ifstream_wchar *this,
10649 const char *name, int mode, int prot, MSVCP_bool virt_init)
10651 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
10653 basic_ifstream_wchar_ctor(this, virt_init);
10655 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10656 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10657 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10659 return this;
10662 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBDHH@Z */
10663 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDHH@Z */
10664 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name, 20)
10665 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name(basic_ifstream_wchar *this,
10666 const char *name, int mode, int prot, MSVCP_bool virt_init)
10668 basic_ifstream_wchar_ctor_name(this, name, mode, prot, virt_init);
10669 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
10670 return this;
10673 /* ??1?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
10674 /* ??1?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
10675 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
10676 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
10677 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_dtor, 4)
10678 void __thiscall basic_ifstream_wchar_dtor(basic_ios_wchar *base)
10680 basic_ifstream_wchar *this = basic_ifstream_wchar_from_basic_ios(base);
10682 TRACE("(%p)\n", this);
10684 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base));
10685 basic_filebuf_wchar_dtor(&this->filebuf);
10688 /* ??_D?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
10689 /* ??_D?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
10690 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10691 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10692 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_vbase_dtor, 4)
10693 void __thiscall basic_ifstream_wchar_vbase_dtor(basic_ifstream_wchar *this)
10695 TRACE("(%p)\n", this);
10697 basic_ifstream_wchar_dtor(basic_ifstream_wchar_to_basic_ios(this));
10698 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base));
10701 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_vector_dtor, 8)
10702 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
10704 basic_ifstream_wchar *this = basic_ifstream_wchar_from_basic_ios(base);
10706 TRACE("(%p %x)\n", this, flags);
10708 if(flags & 2) {
10709 /* we have an array, with the number of elements stored before the first object */
10710 INT_PTR i, *ptr = (INT_PTR *)this-1;
10712 for(i=*ptr-1; i>=0; i--)
10713 basic_ifstream_wchar_vbase_dtor(this+i);
10714 MSVCRT_operator_delete(ptr);
10715 } else {
10716 basic_ifstream_wchar_vbase_dtor(this);
10717 if(flags & 1)
10718 MSVCRT_operator_delete(this);
10721 return this;
10724 /* ?close@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
10725 /* ?close@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
10726 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10727 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10728 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_close, 4)
10729 void __thiscall basic_ifstream_wchar_close(basic_ifstream_wchar *this)
10731 TRACE("(%p)\n", this);
10733 if(!basic_filebuf_wchar_close(&this->filebuf)) {
10734 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10735 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10739 /* ?is_open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
10740 /* ?is_open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
10741 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
10742 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
10743 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_is_open, 4)
10744 MSVCP_bool __thiscall basic_ifstream_wchar_is_open(const basic_ifstream_wchar *this)
10746 TRACE("(%p)\n", this);
10747 return basic_filebuf_wchar_is_open(&this->filebuf);
10750 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
10751 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
10752 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
10753 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
10754 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open, 16)
10755 void __thiscall basic_ifstream_wchar_open(basic_ifstream_wchar *this,
10756 const char *name, int mode, int prot)
10758 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
10760 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10761 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10762 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10766 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
10767 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
10768 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
10769 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
10770 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_old, 12)
10771 void __thiscall basic_ifstream_wchar_open_old(basic_ifstream_wchar *this,
10772 const char *name, unsigned int mode)
10774 basic_ifstream_wchar_open(this, name, mode, _SH_DENYNO);
10777 /* ?rdbuf@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
10778 /* ?rdbuf@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
10779 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
10780 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
10781 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_rdbuf, 4)
10782 basic_filebuf_wchar* __thiscall basic_ifstream_wchar_rdbuf(const basic_ifstream_wchar *this)
10784 TRACE("(%p)\n", this);
10785 return (basic_filebuf_wchar*)&this->filebuf;
10788 static inline basic_ios_char* basic_fstream_char_to_basic_ios(basic_fstream_char *ptr)
10790 return (basic_ios_char*)((char*)ptr+basic_fstream_char_vbtable1[1]);
10793 static inline basic_fstream_char* basic_fstream_char_from_basic_ios(basic_ios_char *ptr)
10795 return (basic_fstream_char*)((char*)ptr-basic_fstream_char_vbtable1[1]);
10798 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
10799 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
10800 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor, 8)
10801 basic_fstream_char* __thiscall basic_fstream_char_ctor(basic_fstream_char *this, MSVCP_bool virt_init)
10803 basic_ios_char *basic_ios;
10805 TRACE("(%p %d)\n", this, virt_init);
10807 if(virt_init) {
10808 this->base.base1.vbtable = basic_fstream_char_vbtable1;
10809 this->base.base2.vbtable = basic_fstream_char_vbtable2;
10810 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10811 basic_ios_char_ctor(basic_ios);
10812 }else {
10813 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10816 basic_filebuf_char_ctor(&this->filebuf);
10817 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
10818 basic_ios->base.vtable = &MSVCP_basic_fstream_char_vtable;
10819 return this;
10822 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
10823 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10824 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_file, 12)
10825 basic_fstream_char* __thiscall basic_fstream_char_ctor_file(basic_fstream_char *this,
10826 FILE *file, MSVCP_bool virt_init)
10828 basic_ios_char *basic_ios;
10830 TRACE("(%p %p %d)\n", this, file, virt_init);
10832 if(virt_init) {
10833 this->base.base1.vbtable = basic_fstream_char_vbtable1;
10834 this->base.base2.vbtable = basic_fstream_char_vbtable2;
10835 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10836 basic_ios_char_ctor(basic_ios);
10837 }else {
10838 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10841 basic_filebuf_char_ctor_file(&this->filebuf, file);
10842 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
10843 basic_ios->base.vtable = &MSVCP_basic_fstream_char_vtable;
10844 return this;
10847 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
10848 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
10849 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name, 20)
10850 basic_fstream_char* __thiscall basic_fstream_char_ctor_name(basic_fstream_char *this,
10851 const char *name, int mode, int prot, MSVCP_bool virt_init)
10853 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
10855 basic_fstream_char_ctor(this, virt_init);
10857 if(!basic_filebuf_char_open(&this->filebuf, name, mode, prot)) {
10858 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10859 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10861 return this;
10864 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
10865 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
10866 DEFINE_THISCALL_WRAPPER(basic_fstream_char_dtor, 4)
10867 void __thiscall basic_fstream_char_dtor(basic_ios_char *base)
10869 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
10871 TRACE("(%p)\n", this);
10873 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
10874 basic_filebuf_char_dtor(&this->filebuf);
10877 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10878 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10879 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vbase_dtor, 4)
10880 void __thiscall basic_fstream_char_vbase_dtor(basic_fstream_char *this)
10882 TRACE("(%p)\n", this);
10884 basic_fstream_char_dtor(basic_fstream_char_to_basic_ios(this));
10885 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
10888 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vector_dtor, 8)
10889 basic_fstream_char* __thiscall basic_fstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
10891 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
10893 TRACE("(%p %x)\n", this, flags);
10895 if(flags & 2) {
10896 /* we have an array, with the number of elements stored before the first object */
10897 INT_PTR i, *ptr = (INT_PTR *)this-1;
10899 for(i=*ptr-1; i>=0; i--)
10900 basic_fstream_char_vbase_dtor(this+i);
10901 MSVCRT_operator_delete(ptr);
10902 } else {
10903 basic_fstream_char_vbase_dtor(this);
10904 if(flags & 1)
10905 MSVCRT_operator_delete(this);
10908 return this;
10911 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10912 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10913 DEFINE_THISCALL_WRAPPER(basic_fstream_char_close, 4)
10914 void __thiscall basic_fstream_char_close(basic_fstream_char *this)
10916 TRACE("(%p)\n", this);
10918 if(!basic_filebuf_char_close(&this->filebuf)) {
10919 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10920 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10924 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
10925 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
10926 DEFINE_THISCALL_WRAPPER(basic_fstream_char_is_open, 4)
10927 MSVCP_bool __thiscall basic_fstream_char_is_open(const basic_fstream_char *this)
10929 TRACE("(%p)\n", this);
10930 return basic_filebuf_char_is_open(&this->filebuf);
10933 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
10934 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
10935 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open, 16)
10936 void __thiscall basic_fstream_char_open(basic_fstream_char *this,
10937 const char *name, int mode, int prot)
10939 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
10941 if(!basic_filebuf_char_open(&this->filebuf, name, mode, prot)) {
10942 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10943 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10947 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
10948 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
10949 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_old, 12)
10950 void __thiscall basic_fstream_char_open_old(basic_fstream_char *this,
10951 const char *name, unsigned int mode)
10953 basic_fstream_char_open(this, name, mode, _SH_DENYNO);
10956 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10957 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10958 DEFINE_THISCALL_WRAPPER(basic_fstream_char_rdbuf, 4)
10959 basic_filebuf_char* __thiscall basic_fstream_char_rdbuf(const basic_fstream_char *this)
10961 TRACE("(%p)\n", this);
10962 return (basic_filebuf_char*)&this->filebuf;
10965 static inline basic_ios_wchar* basic_fstream_wchar_to_basic_ios(basic_fstream_wchar *ptr)
10967 return (basic_ios_wchar*)((char*)ptr+basic_fstream_wchar_vbtable1[1]);
10970 static inline basic_fstream_wchar* basic_fstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
10972 return (basic_fstream_wchar*)((char*)ptr-basic_fstream_wchar_vbtable1[1]);
10975 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
10976 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
10977 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor, 8)
10978 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor(basic_fstream_wchar *this, MSVCP_bool virt_init)
10980 basic_ios_wchar *basic_ios;
10982 TRACE("(%p %d)\n", this, virt_init);
10984 if(virt_init) {
10985 this->base.base1.vbtable = basic_fstream_wchar_vbtable1;
10986 this->base.base2.vbtable = basic_fstream_wchar_vbtable2;
10987 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
10988 basic_ios_wchar_ctor(basic_ios);
10989 }else {
10990 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
10993 basic_filebuf_wchar_ctor(&this->filebuf);
10994 basic_iostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE);
10995 basic_ios->base.vtable = &MSVCP_basic_fstream_wchar_vtable;
10996 return this;
10999 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
11000 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
11001 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor, 8)
11002 basic_fstream_wchar* __thiscall basic_fstream_short_ctor(basic_fstream_wchar *this, MSVCP_bool virt_init)
11004 basic_fstream_wchar_ctor(this, virt_init);
11005 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
11006 return this;
11009 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
11010 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11011 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_file, 12)
11012 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_file(basic_fstream_wchar *this,
11013 FILE *file, MSVCP_bool virt_init)
11015 basic_ios_wchar *basic_ios;
11017 TRACE("(%p %p %d)\n", this, file, virt_init);
11019 if(virt_init) {
11020 this->base.base1.vbtable = basic_fstream_wchar_vbtable1;
11021 this->base.base2.vbtable = basic_fstream_wchar_vbtable2;
11022 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11023 basic_ios_wchar_ctor(basic_ios);
11024 }else {
11025 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11028 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
11029 basic_iostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE);
11030 basic_ios->base.vtable = &MSVCP_basic_fstream_wchar_vtable;
11031 return this;
11034 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
11035 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11036 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_file, 12)
11037 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_file(basic_fstream_wchar *this,
11038 FILE *file, MSVCP_bool virt_init)
11040 basic_fstream_wchar_ctor_file(this, file, virt_init);
11041 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
11042 return this;
11045 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
11046 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
11047 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name, 20)
11048 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name(basic_fstream_wchar *this,
11049 const char *name, int mode, int prot, MSVCP_bool virt_init)
11051 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
11053 basic_fstream_wchar_ctor(this, virt_init);
11055 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode, prot)) {
11056 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11057 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11059 return this;
11062 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
11063 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
11064 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name, 20)
11065 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name(basic_fstream_wchar *this,
11066 const char *name, int mode, int prot, MSVCP_bool virt_init)
11068 basic_fstream_wchar_ctor_name(this, name, mode, prot, virt_init);
11069 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
11070 return this;
11073 /* ??1?$basic_fstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
11074 /* ??1?$basic_fstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
11075 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
11076 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
11077 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_dtor, 4)
11078 void __thiscall basic_fstream_wchar_dtor(basic_ios_wchar *base)
11080 basic_fstream_wchar *this = basic_fstream_wchar_from_basic_ios(base);
11082 TRACE("(%p)\n", this);
11084 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(&this->base));
11085 basic_filebuf_wchar_dtor(&this->filebuf);
11088 /* ??_D?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11089 /* ??_D?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11090 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11091 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11092 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_vbase_dtor, 4)
11093 void __thiscall basic_fstream_wchar_vbase_dtor(basic_fstream_wchar *this)
11095 TRACE("(%p)\n", this);
11097 basic_fstream_wchar_dtor(basic_fstream_wchar_to_basic_ios(this));
11098 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base.base1));
11101 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_vector_dtor, 8)
11102 basic_fstream_wchar* __thiscall basic_fstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11104 basic_fstream_wchar *this = basic_fstream_wchar_from_basic_ios(base);
11106 TRACE("(%p %x)\n", this, flags);
11108 if(flags & 2) {
11109 /* we have an array, with the number of elements stored before the first object */
11110 INT_PTR i, *ptr = (INT_PTR *)this-1;
11112 for(i=*ptr-1; i>=0; i--)
11113 basic_fstream_wchar_vbase_dtor(this+i);
11114 MSVCRT_operator_delete(ptr);
11115 } else {
11116 basic_fstream_wchar_vbase_dtor(this);
11117 if(flags & 1)
11118 MSVCRT_operator_delete(this);
11121 return this;
11124 /* ?close@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11125 /* ?close@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11126 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11127 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11128 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_close, 4)
11129 void __thiscall basic_fstream_wchar_close(basic_fstream_wchar *this)
11131 TRACE("(%p)\n", this);
11133 if(!basic_filebuf_wchar_close(&this->filebuf)) {
11134 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11135 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11139 /* ?is_open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
11140 /* ?is_open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
11141 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
11142 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
11143 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_is_open, 4)
11144 MSVCP_bool __thiscall basic_fstream_wchar_is_open(const basic_fstream_wchar *this)
11146 TRACE("(%p)\n", this);
11147 return basic_filebuf_wchar_is_open(&this->filebuf);
11150 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
11151 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
11152 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
11153 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
11154 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open, 16)
11155 void __thiscall basic_fstream_wchar_open(basic_fstream_wchar *this,
11156 const char *name, int mode, int prot)
11158 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
11160 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode, prot)) {
11161 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11162 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11166 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
11167 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
11168 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
11169 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
11170 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_old, 12)
11171 void __thiscall basic_fstream_wchar_open_old(basic_fstream_wchar *this,
11172 const char *name, unsigned int mode)
11174 basic_fstream_wchar_open(this, name, mode, _SH_DENYNO);
11177 /* ?rdbuf@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
11178 /* ?rdbuf@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
11179 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
11180 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
11181 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_rdbuf, 4)
11182 basic_filebuf_wchar* __thiscall basic_fstream_wchar_rdbuf(const basic_fstream_wchar *this)
11184 TRACE("(%p)\n", this);
11185 return (basic_filebuf_wchar*)&this->filebuf;
11188 static inline basic_ios_char* basic_ostringstream_char_to_basic_ios(basic_ostringstream_char *ptr)
11190 return (basic_ios_char*)((char*)ptr+basic_ostringstream_char_vbtable[1]);
11193 static inline basic_ostringstream_char* basic_ostringstream_char_from_basic_ios(basic_ios_char *ptr)
11195 return (basic_ostringstream_char*)((char*)ptr-basic_ostringstream_char_vbtable[1]);
11198 /* ??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 */
11199 /* ??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 */
11200 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_str, 16)
11201 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_str(basic_ostringstream_char *this,
11202 const basic_string_char *str, int mode, MSVCP_bool virt_init)
11204 basic_ios_char *basic_ios;
11206 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11208 if(virt_init) {
11209 this->base.vbtable = basic_ostringstream_char_vbtable;
11210 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11211 basic_ios_char_ctor(basic_ios);
11212 }else {
11213 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11216 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
11217 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11218 basic_ios->base.vtable = &MSVCP_basic_ostringstream_char_vtable;
11219 return this;
11222 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
11223 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
11224 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_mode, 12)
11225 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_mode(
11226 basic_ostringstream_char *this, int mode, MSVCP_bool virt_init)
11228 basic_ios_char *basic_ios;
11230 TRACE("(%p %d %d)\n", this, mode, virt_init);
11232 if(virt_init) {
11233 this->base.vbtable = basic_ostringstream_char_vbtable;
11234 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11235 basic_ios_char_ctor(basic_ios);
11236 }else {
11237 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11240 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_out);
11241 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11242 basic_ios->base.vtable = &MSVCP_basic_ostringstream_char_vtable;
11243 return this;
11246 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11247 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11248 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor, 8)
11249 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor(
11250 basic_ostringstream_char *this, MSVCP_bool virt_init)
11252 return basic_ostringstream_char_ctor_mode(this, 0, virt_init);
11255 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
11256 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
11257 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_dtor, 4)
11258 void __thiscall basic_ostringstream_char_dtor(basic_ios_char *base)
11260 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
11262 TRACE("(%p)\n", this);
11264 basic_stringbuf_char_dtor(&this->strbuf);
11265 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
11268 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11269 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11270 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vbase_dtor, 4)
11271 void __thiscall basic_ostringstream_char_vbase_dtor(basic_ostringstream_char *this)
11273 TRACE("(%p)\n", this);
11275 basic_ostringstream_char_dtor(basic_ostringstream_char_to_basic_ios(this));
11276 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
11279 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vector_dtor, 8)
11280 basic_ostringstream_char* __thiscall basic_ostringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11282 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
11284 TRACE("(%p %x)\n", this, flags);
11286 if(flags & 2) {
11287 /* we have an array, with the number of elements stored before the first object */
11288 INT_PTR i, *ptr = (INT_PTR *)this-1;
11290 for(i=*ptr-1; i>=0; i--)
11291 basic_ostringstream_char_vbase_dtor(this+i);
11292 MSVCRT_operator_delete(ptr);
11293 } else {
11294 basic_ostringstream_char_vbase_dtor(this);
11295 if(flags & 1)
11296 MSVCRT_operator_delete(this);
11299 return this;
11302 /* ?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 */
11303 /* ?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 */
11304 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_rdbuf, 4)
11305 basic_stringbuf_char* __thiscall basic_ostringstream_char_rdbuf(const basic_ostringstream_char *this)
11307 TRACE("(%p)\n", this);
11308 return (basic_stringbuf_char*)&this->strbuf;
11311 /* ?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 */
11312 /* ?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 */
11313 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_set, 8)
11314 void __thiscall basic_ostringstream_char_str_set(basic_ostringstream_char *this, const basic_string_char *str)
11316 TRACE("(%p %p)\n", this, str);
11317 basic_stringbuf_char_str_set(&this->strbuf, str);
11320 /* ?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 */
11321 /* ?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 */
11322 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_get, 8)
11323 basic_string_char* __thiscall basic_ostringstream_char_str_get(const basic_ostringstream_char *this, basic_string_char *ret)
11325 TRACE("(%p %p)\n", this, ret);
11326 return basic_stringbuf_char_str_get(&this->strbuf, ret);
11329 static inline basic_ios_wchar* basic_ostringstream_wchar_to_basic_ios(basic_ostringstream_wchar *ptr)
11331 return (basic_ios_wchar*)((char*)ptr+basic_ostringstream_wchar_vbtable[1]);
11334 static inline basic_ostringstream_wchar* basic_ostringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
11336 return (basic_ostringstream_wchar*)((char*)ptr-basic_ostringstream_wchar_vbtable[1]);
11339 /* ??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 */
11340 /* ??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 */
11341 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor_str, 16)
11342 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_str(basic_ostringstream_wchar *this,
11343 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
11345 basic_ios_wchar *basic_ios;
11347 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11349 if(virt_init) {
11350 this->base.vbtable = basic_ostringstream_wchar_vbtable;
11351 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11352 basic_ios_wchar_ctor(basic_ios);
11353 }else {
11354 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11357 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
11358 basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11359 basic_ios->base.vtable = &MSVCP_basic_ostringstream_wchar_vtable;
11360 return this;
11363 /* ??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 */
11364 /* ??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 */
11365 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_str, 16)
11366 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_str(basic_ostringstream_wchar *this,
11367 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
11369 basic_ostringstream_wchar_ctor_str(this, str, mode, virt_init);
11370 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ostringstream_short_vtable;
11371 return this;
11374 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
11375 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
11376 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor_mode, 12)
11377 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_mode(
11378 basic_ostringstream_wchar *this, int mode, MSVCP_bool virt_init)
11380 basic_ios_wchar *basic_ios;
11382 TRACE("(%p %d %d)\n", this, mode, virt_init);
11384 if(virt_init) {
11385 this->base.vbtable = basic_ostringstream_wchar_vbtable;
11386 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11387 basic_ios_wchar_ctor(basic_ios);
11388 }else {
11389 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11392 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_out);
11393 basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11394 basic_ios->base.vtable = &MSVCP_basic_ostringstream_wchar_vtable;
11395 return this;
11398 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
11399 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
11400 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_mode, 12)
11401 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_mode(
11402 basic_ostringstream_wchar *this, int mode, MSVCP_bool virt_init)
11404 basic_ostringstream_wchar_ctor_mode(this, mode, virt_init);
11405 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ostringstream_short_vtable;
11406 return this;
11409 /* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
11410 /* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
11411 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor, 8)
11412 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor(
11413 basic_ostringstream_wchar *this, MSVCP_bool virt_init)
11415 return basic_ostringstream_wchar_ctor_mode(this, 0, virt_init);
11418 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
11419 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
11420 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor, 8)
11421 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor(
11422 basic_ostringstream_wchar *this, MSVCP_bool virt_init)
11424 return basic_ostringstream_short_ctor_mode(this, 0, virt_init);
11427 /* ??1?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
11428 /* ??1?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
11429 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
11430 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
11431 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_dtor, 4)
11432 void __thiscall basic_ostringstream_wchar_dtor(basic_ios_wchar *base)
11434 basic_ostringstream_wchar *this = basic_ostringstream_wchar_from_basic_ios(base);
11436 TRACE("(%p)\n", this);
11438 basic_stringbuf_wchar_dtor(&this->strbuf);
11439 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base));
11442 /* ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
11443 /* ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
11444 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
11445 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
11446 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_vbase_dtor, 4)
11447 void __thiscall basic_ostringstream_wchar_vbase_dtor(basic_ostringstream_wchar *this)
11449 TRACE("(%p)\n", this);
11451 basic_ostringstream_wchar_dtor(basic_ostringstream_wchar_to_basic_ios(this));
11452 basic_ios_wchar_dtor(basic_ostream_wchar_get_basic_ios(&this->base));
11455 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_vector_dtor, 8)
11456 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11458 basic_ostringstream_wchar *this = basic_ostringstream_wchar_from_basic_ios(base);
11460 TRACE("(%p %x)\n", this, flags);
11462 if(flags & 2) {
11463 /* we have an array, with the number of elements stored before the first object */
11464 INT_PTR i, *ptr = (INT_PTR *)this-1;
11466 for(i=*ptr-1; i>=0; i--)
11467 basic_ostringstream_wchar_vbase_dtor(this+i);
11468 MSVCRT_operator_delete(ptr);
11469 } else {
11470 basic_ostringstream_wchar_vbase_dtor(this);
11471 if(flags & 1)
11472 MSVCRT_operator_delete(this);
11475 return this;
11478 /* ?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 */
11479 /* ?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 */
11480 /* ?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 */
11481 /* ?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 */
11482 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_rdbuf, 4)
11483 basic_stringbuf_wchar* __thiscall basic_ostringstream_wchar_rdbuf(const basic_ostringstream_wchar *this)
11485 TRACE("(%p)\n", this);
11486 return (basic_stringbuf_wchar*)&this->strbuf;
11489 /* ?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 */
11490 /* ?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 */
11491 /* ?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 */
11492 /* ?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 */
11493 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_str_set, 8)
11494 void __thiscall basic_ostringstream_wchar_str_set(basic_ostringstream_wchar *this, const basic_string_wchar *str)
11496 TRACE("(%p %p)\n", this, str);
11497 basic_stringbuf_wchar_str_set(&this->strbuf, str);
11500 /* ?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 */
11501 /* ?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 */
11502 /* ?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 */
11503 /* ?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 */
11504 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_str_get, 8)
11505 basic_string_wchar* __thiscall basic_ostringstream_wchar_str_get(const basic_ostringstream_wchar *this, basic_string_wchar *ret)
11507 TRACE("(%p %p)\n", this, ret);
11508 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
11511 static inline basic_ios_char* basic_istringstream_char_to_basic_ios(basic_istringstream_char *ptr)
11513 return (basic_ios_char*)((char*)ptr+basic_istringstream_char_vbtable[1]);
11516 static inline basic_istringstream_char* basic_istringstream_char_from_basic_ios(basic_ios_char *ptr)
11518 return (basic_istringstream_char*)((char*)ptr-basic_istringstream_char_vbtable[1]);
11521 /* ??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 */
11522 /* ??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 */
11523 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_str, 16)
11524 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_str(basic_istringstream_char *this,
11525 const basic_string_char *str, int mode, MSVCP_bool virt_init)
11527 basic_ios_char *basic_ios;
11529 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11531 if(virt_init) {
11532 this->base.vbtable = basic_istringstream_char_vbtable;
11533 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11534 basic_ios_char_ctor(basic_ios);
11535 }else {
11536 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11539 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
11540 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11541 basic_ios->base.vtable = &MSVCP_basic_istringstream_char_vtable;
11542 return this;
11545 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
11546 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
11547 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_mode, 12)
11548 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_mode(
11549 basic_istringstream_char *this, int mode, MSVCP_bool virt_init)
11551 basic_ios_char *basic_ios;
11553 TRACE("(%p %d %d)\n", this, mode, virt_init);
11555 if(virt_init) {
11556 this->base.vbtable = basic_istringstream_char_vbtable;
11557 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11558 basic_ios_char_ctor(basic_ios);
11559 }else {
11560 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11563 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_in);
11564 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11565 basic_ios->base.vtable = &MSVCP_basic_istringstream_char_vtable;
11566 return this;
11569 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11570 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11571 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor, 8)
11572 basic_istringstream_char* __thiscall basic_istringstream_char_ctor(
11573 basic_istringstream_char *this, MSVCP_bool virt_init)
11575 return basic_istringstream_char_ctor_mode(this, 0, virt_init);
11578 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
11579 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
11580 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_dtor, 4)
11581 void __thiscall basic_istringstream_char_dtor(basic_ios_char *base)
11583 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
11585 TRACE("(%p)\n", this);
11587 basic_stringbuf_char_dtor(&this->strbuf);
11588 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
11591 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11592 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11593 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vbase_dtor, 4)
11594 void __thiscall basic_istringstream_char_vbase_dtor(basic_istringstream_char *this)
11596 TRACE("(%p)\n", this);
11598 basic_istringstream_char_dtor(basic_istringstream_char_to_basic_ios(this));
11599 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base));
11602 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vector_dtor, 8)
11603 basic_istringstream_char* __thiscall basic_istringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11605 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
11607 TRACE("(%p %x)\n", this, flags);
11609 if(flags & 2) {
11610 /* we have an array, with the number of elements stored before the first object */
11611 INT_PTR i, *ptr = (INT_PTR *)this-1;
11613 for(i=*ptr-1; i>=0; i--)
11614 basic_istringstream_char_vbase_dtor(this+i);
11615 MSVCRT_operator_delete(ptr);
11616 } else {
11617 basic_istringstream_char_vbase_dtor(this);
11618 if(flags & 1)
11619 MSVCRT_operator_delete(this);
11622 return this;
11625 /* ?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 */
11626 /* ?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 */
11627 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_rdbuf, 4)
11628 basic_stringbuf_char* __thiscall basic_istringstream_char_rdbuf(const basic_istringstream_char *this)
11630 TRACE("(%p)\n", this);
11631 return (basic_stringbuf_char*)&this->strbuf;
11634 /* ?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 */
11635 /* ?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 */
11636 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_set, 8)
11637 void __thiscall basic_istringstream_char_str_set(basic_istringstream_char *this, const basic_string_char *str)
11639 TRACE("(%p %p)\n", this, str);
11640 basic_stringbuf_char_str_set(&this->strbuf, str);
11643 /* ?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 */
11644 /* ?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 */
11645 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_get, 8)
11646 basic_string_char* __thiscall basic_istringstream_char_str_get(const basic_istringstream_char *this, basic_string_char *ret)
11648 TRACE("(%p %p)\n", this, ret);
11649 return basic_stringbuf_char_str_get(&this->strbuf, ret);
11652 static inline basic_ios_wchar* basic_istringstream_wchar_to_basic_ios(basic_istringstream_wchar *ptr)
11654 return (basic_ios_wchar*)((char*)ptr+basic_istringstream_wchar_vbtable[1]);
11657 static inline basic_istringstream_wchar* basic_istringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
11659 return (basic_istringstream_wchar*)((char*)ptr-basic_istringstream_wchar_vbtable[1]);
11662 /* ??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 */
11663 /* ??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 */
11664 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor_str, 16)
11665 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_str(basic_istringstream_wchar *this,
11666 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
11668 basic_ios_wchar *basic_ios;
11670 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11672 if(virt_init) {
11673 this->base.vbtable = basic_istringstream_wchar_vbtable;
11674 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11675 basic_ios_wchar_ctor(basic_ios);
11676 }else {
11677 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11680 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
11681 basic_istream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11682 basic_ios->base.vtable = &MSVCP_basic_istringstream_wchar_vtable;
11683 return this;
11686 /* ??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 */
11687 /* ??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 */
11688 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor_str, 16)
11689 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor_str(basic_istringstream_wchar *this,
11690 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
11692 basic_istringstream_wchar_ctor_str(this, str, mode, virt_init);
11693 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_istringstream_short_vtable;
11694 return this;
11697 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
11698 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
11699 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor_mode, 12)
11700 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_mode(
11701 basic_istringstream_wchar *this, int mode, MSVCP_bool virt_init)
11703 basic_ios_wchar *basic_ios;
11705 TRACE("(%p %d %d)\n", this, mode, virt_init);
11707 if(virt_init) {
11708 this->base.vbtable = basic_istringstream_wchar_vbtable;
11709 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11710 basic_ios_wchar_ctor(basic_ios);
11711 }else {
11712 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11715 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_in);
11716 basic_istream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11717 basic_ios->base.vtable = &MSVCP_basic_istringstream_wchar_vtable;
11718 return this;
11721 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
11722 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
11723 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor_mode, 12)
11724 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor_mode(
11725 basic_istringstream_wchar *this, int mode, MSVCP_bool virt_init)
11727 basic_istringstream_wchar_ctor_mode(this, mode, virt_init);
11728 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_istringstream_short_vtable;
11729 return this;
11732 /* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
11733 /* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
11734 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor, 8)
11735 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor(
11736 basic_istringstream_wchar *this, MSVCP_bool virt_init)
11738 return basic_istringstream_wchar_ctor_mode(this, 0, virt_init);
11741 /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
11742 /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
11743 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor, 8)
11744 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor(
11745 basic_istringstream_wchar *this, MSVCP_bool virt_init)
11747 return basic_istringstream_short_ctor_mode(this, 0, virt_init);
11750 /* ??1?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
11751 /* ??1?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
11752 /* ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
11753 /* ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
11754 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_dtor, 4)
11755 void __thiscall basic_istringstream_wchar_dtor(basic_ios_wchar *base)
11757 basic_istringstream_wchar *this = basic_istringstream_wchar_from_basic_ios(base);
11759 TRACE("(%p)\n", this);
11761 basic_stringbuf_wchar_dtor(&this->strbuf);
11762 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base));
11765 /* ??_D?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
11766 /* ??_D?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
11767 /* ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
11768 /* ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
11769 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_vbase_dtor, 4)
11770 void __thiscall basic_istringstream_wchar_vbase_dtor(basic_istringstream_wchar *this)
11772 TRACE("(%p)\n", this);
11774 basic_istringstream_wchar_dtor(basic_istringstream_wchar_to_basic_ios(this));
11775 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base));
11778 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_vector_dtor, 8)
11779 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11781 basic_istringstream_wchar *this = basic_istringstream_wchar_from_basic_ios(base);
11783 TRACE("(%p %x)\n", this, flags);
11785 if(flags & 2) {
11786 /* we have an array, with the number of elements stored before the first object */
11787 INT_PTR i, *ptr = (INT_PTR *)this-1;
11789 for(i=*ptr-1; i>=0; i--)
11790 basic_istringstream_wchar_vbase_dtor(this+i);
11791 MSVCRT_operator_delete(ptr);
11792 } else {
11793 basic_istringstream_wchar_vbase_dtor(this);
11794 if(flags & 1)
11795 MSVCRT_operator_delete(this);
11798 return this;
11801 /* ?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 */
11802 /* ?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 */
11803 /* ?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 */
11804 /* ?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 */
11805 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_rdbuf, 4)
11806 basic_stringbuf_wchar* __thiscall basic_istringstream_wchar_rdbuf(const basic_istringstream_wchar *this)
11808 TRACE("(%p)\n", this);
11809 return (basic_stringbuf_wchar*)&this->strbuf;
11812 /* ?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 */
11813 /* ?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 */
11814 /* ?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 */
11815 /* ?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 */
11816 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_str_set, 8)
11817 void __thiscall basic_istringstream_wchar_str_set(basic_istringstream_wchar *this, const basic_string_wchar *str)
11819 TRACE("(%p %p)\n", this, str);
11820 basic_stringbuf_wchar_str_set(&this->strbuf, str);
11823 /* ?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 */
11824 /* ?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 */
11825 /* ?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 */
11826 /* ?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 */
11827 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_str_get, 8)
11828 basic_string_wchar* __thiscall basic_istringstream_wchar_str_get(const basic_istringstream_wchar *this, basic_string_wchar *ret)
11830 TRACE("(%p %p)\n", this, ret);
11831 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
11834 static inline basic_ios_char* basic_stringstream_char_to_basic_ios(basic_stringstream_char *ptr)
11836 return (basic_ios_char*)((char*)ptr+basic_stringstream_char_vbtable1[1]);
11839 static inline basic_stringstream_char* basic_stringstream_char_from_basic_ios(basic_ios_char *ptr)
11841 return (basic_stringstream_char*)((char*)ptr-basic_stringstream_char_vbtable1[1]);
11844 /* ??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 */
11845 /* ??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 */
11846 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_str, 16)
11847 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_str(basic_stringstream_char *this,
11848 const basic_string_char *str, int mode, MSVCP_bool virt_init)
11850 basic_ios_char *basic_ios;
11852 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11854 if(virt_init) {
11855 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
11856 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
11857 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11858 basic_ios_char_ctor(basic_ios);
11859 }else {
11860 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11863 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode);
11864 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
11865 basic_ios->base.vtable = &MSVCP_basic_stringstream_char_vtable;
11866 return this;
11869 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
11870 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
11871 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_mode, 12)
11872 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_mode(
11873 basic_stringstream_char *this, int mode, MSVCP_bool virt_init)
11875 basic_ios_char *basic_ios;
11877 TRACE("(%p %d %d)\n", this, mode, virt_init);
11879 if(virt_init) {
11880 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
11881 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
11882 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11883 basic_ios_char_ctor(basic_ios);
11884 }else {
11885 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11888 basic_stringbuf_char_ctor_mode(&this->strbuf, mode);
11889 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
11890 basic_ios->base.vtable = &MSVCP_basic_stringstream_char_vtable;
11891 return this;
11894 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11895 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11896 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor, 8)
11897 basic_stringstream_char* __thiscall basic_stringstream_char_ctor(
11898 basic_stringstream_char *this, MSVCP_bool virt_init)
11900 return basic_stringstream_char_ctor_mode(
11901 this, OPENMODE_out|OPENMODE_in, virt_init);
11904 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
11905 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
11906 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_dtor, 4)
11907 void __thiscall basic_stringstream_char_dtor(basic_ios_char *base)
11909 basic_stringstream_char *this = basic_stringstream_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_stringbuf_char_dtor(&this->strbuf);
11917 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11918 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11919 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vbase_dtor, 4)
11920 void __thiscall basic_stringstream_char_vbase_dtor(basic_stringstream_char *this)
11922 TRACE("(%p)\n", this);
11924 basic_stringstream_char_dtor(basic_stringstream_char_to_basic_ios(this));
11925 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
11928 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vector_dtor, 8)
11929 basic_stringstream_char* __thiscall basic_stringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11931 basic_stringstream_char *this = basic_stringstream_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_stringstream_char_vbase_dtor(this+i);
11941 MSVCRT_operator_delete(ptr);
11942 } else {
11943 basic_stringstream_char_vbase_dtor(this);
11944 if(flags & 1)
11945 MSVCRT_operator_delete(this);
11948 return this;
11951 /* ?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 */
11952 /* ?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 */
11953 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_rdbuf, 4)
11954 basic_stringbuf_char* __thiscall basic_stringstream_char_rdbuf(const basic_stringstream_char *this)
11956 TRACE("(%p)\n", this);
11957 return (basic_stringbuf_char*)&this->strbuf;
11960 /* ?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 */
11961 /* ?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 */
11962 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_set, 8)
11963 void __thiscall basic_stringstream_char_str_set(basic_stringstream_char *this, const basic_string_char *str)
11965 TRACE("(%p %p)\n", this, str);
11966 basic_stringbuf_char_str_set(&this->strbuf, str);
11969 /* ?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 */
11970 /* ?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 */
11971 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_get, 8)
11972 basic_string_char* __thiscall basic_stringstream_char_str_get(const basic_stringstream_char *this, basic_string_char *ret)
11974 TRACE("(%p %p)\n", this, ret);
11975 return basic_stringbuf_char_str_get(&this->strbuf, ret);
11978 static inline basic_ios_wchar* basic_stringstream_wchar_to_basic_ios(basic_stringstream_wchar *ptr)
11980 return (basic_ios_wchar*)((char*)ptr+basic_stringstream_wchar_vbtable1[1]);
11983 static inline basic_stringstream_wchar* basic_stringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
11985 return (basic_stringstream_wchar*)((char*)ptr-basic_stringstream_wchar_vbtable1[1]);
11988 /* ??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 */
11989 /* ??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 */
11990 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor_str, 16)
11991 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_str(basic_stringstream_wchar *this,
11992 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
11994 basic_ios_wchar *basic_ios;
11996 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11998 if(virt_init) {
11999 this->base.base1.vbtable = basic_stringstream_wchar_vbtable1;
12000 this->base.base2.vbtable = basic_stringstream_wchar_vbtable2;
12001 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12002 basic_ios_wchar_ctor(basic_ios);
12003 }else {
12004 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12007 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode);
12008 basic_iostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE);
12009 basic_ios->base.vtable = &MSVCP_basic_stringstream_wchar_vtable;
12010 return this;
12013 /* ??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 */
12014 /* ??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 */
12015 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor_str, 16)
12016 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor_str(basic_stringstream_wchar *this,
12017 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
12019 basic_stringstream_wchar_ctor_str(this, str, mode, virt_init);
12020 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_stringstream_short_vtable;
12021 return this;
12024 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
12025 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
12026 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor_mode, 12)
12027 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_mode(
12028 basic_stringstream_wchar *this, int mode, MSVCP_bool virt_init)
12030 basic_ios_wchar *basic_ios;
12032 TRACE("(%p %d %d)\n", this, mode, virt_init);
12034 if(virt_init) {
12035 this->base.base1.vbtable = basic_stringstream_wchar_vbtable1;
12036 this->base.base2.vbtable = basic_stringstream_wchar_vbtable2;
12037 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12038 basic_ios_wchar_ctor(basic_ios);
12039 }else {
12040 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12043 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode);
12044 basic_iostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE);
12045 basic_ios->base.vtable = &MSVCP_basic_stringstream_wchar_vtable;
12046 return this;
12049 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
12050 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
12051 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor_mode, 12)
12052 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor_mode(
12053 basic_stringstream_wchar *this, int mode, MSVCP_bool virt_init)
12055 basic_stringstream_wchar_ctor_mode(this, mode, virt_init);
12056 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_stringstream_short_vtable;
12057 return this;
12060 /* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
12061 /* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
12062 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor, 8)
12063 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor(
12064 basic_stringstream_wchar *this, MSVCP_bool virt_init)
12066 return basic_stringstream_wchar_ctor_mode(
12067 this, OPENMODE_out|OPENMODE_in, virt_init);
12070 /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
12071 /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
12072 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor, 8)
12073 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor(
12074 basic_stringstream_wchar *this, MSVCP_bool virt_init)
12076 return basic_stringstream_short_ctor_mode(
12077 this, OPENMODE_out|OPENMODE_in, virt_init);
12080 /* ??1?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
12081 /* ??1?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
12082 /* ??1?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
12083 /* ??1?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
12084 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_dtor, 4)
12085 void __thiscall basic_stringstream_wchar_dtor(basic_ios_wchar *base)
12087 basic_stringstream_wchar *this = basic_stringstream_wchar_from_basic_ios(base);
12089 TRACE("(%p)\n", this);
12091 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(&this->base));
12092 basic_stringbuf_wchar_dtor(&this->strbuf);
12095 /* ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
12096 /* ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
12097 /* ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
12098 /* ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
12099 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_vbase_dtor, 4)
12100 void __thiscall basic_stringstream_wchar_vbase_dtor(basic_stringstream_wchar *this)
12102 TRACE("(%p)\n", this);
12104 basic_stringstream_wchar_dtor(basic_stringstream_wchar_to_basic_ios(this));
12105 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base.base1));
12108 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_vector_dtor, 8)
12109 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
12111 basic_stringstream_wchar *this = basic_stringstream_wchar_from_basic_ios(base);
12113 TRACE("(%p %x)\n", this, flags);
12115 if(flags & 2) {
12116 /* we have an array, with the number of elements stored before the first object */
12117 INT_PTR i, *ptr = (INT_PTR *)this-1;
12119 for(i=*ptr-1; i>=0; i--)
12120 basic_stringstream_wchar_vbase_dtor(this+i);
12121 MSVCRT_operator_delete(ptr);
12122 } else {
12123 basic_stringstream_wchar_vbase_dtor(this);
12124 if(flags & 1)
12125 MSVCRT_operator_delete(this);
12128 return this;
12131 /* ?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 */
12132 /* ?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 */
12133 /* ?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 */
12134 /* ?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 */
12135 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_rdbuf, 4)
12136 basic_stringbuf_wchar* __thiscall basic_stringstream_wchar_rdbuf(const basic_stringstream_wchar *this)
12138 TRACE("(%p)\n", this);
12139 return (basic_stringbuf_wchar*)&this->strbuf;
12142 /* ?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 */
12143 /* ?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 */
12144 /* ?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 */
12145 /* ?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 */
12146 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_str_set, 8)
12147 void __thiscall basic_stringstream_wchar_str_set(basic_stringstream_wchar *this, const basic_string_wchar *str)
12149 TRACE("(%p %p)\n", this, str);
12150 basic_stringbuf_wchar_str_set(&this->strbuf, str);
12153 /* ?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 */
12154 /* ?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 */
12155 /* ?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 */
12156 /* ?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 */
12157 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_str_get, 8)
12158 basic_string_wchar* __thiscall basic_stringstream_wchar_str_get(const basic_stringstream_wchar *this, basic_string_wchar *ret)
12160 TRACE("(%p %p)\n", this, ret);
12161 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
12164 /* ?_Init@strstreambuf@std@@IAEXHPAD0H@Z */
12165 /* ?_Init@strstreambuf@std@@IEAAX_JPEAD1H@Z */
12166 DEFINE_THISCALL_WRAPPER(strstreambuf__Init, 20)
12167 void __thiscall strstreambuf__Init(strstreambuf *this, streamsize len, char *g, char *p, int mode)
12169 TRACE("(%p %ld %p %p %d)\n", this, len, g, p, mode);
12171 this->minsize = 32;
12172 this->endsave = NULL;
12173 this->strmode = mode;
12174 this->palloc = NULL;
12175 this->pfree = NULL;
12177 if(!g) {
12178 this->strmode |= STRSTATE_Dynamic;
12179 if(len > this->minsize)
12180 this->minsize = len;
12181 this->seekhigh = NULL;
12182 return;
12185 if(len < 0)
12186 len = INT_MAX;
12187 else if(!len)
12188 len = strlen(g);
12190 this->seekhigh = g+len;
12191 basic_streambuf_char_setg(&this->base, g, g, p ? p : this->seekhigh);
12192 if(p)
12193 basic_streambuf_char_setp(&this->base, p, this->seekhigh);
12196 /* ??0strstreambuf@std@@QAE@PACH0@Z */
12197 /* ??0strstreambuf@std@@QEAA@PEAC_J0@Z */
12198 /* ??0strstreambuf@std@@QAE@PADH0@Z */
12199 /* ??0strstreambuf@std@@QEAA@PEAD_J0@Z */
12200 /* ??0strstreambuf@std@@QAE@PAEH0@Z */
12201 /* ??0strstreambuf@std@@QEAA@PEAE_J0@Z */
12202 static strstreambuf* strstreambuf_ctor_get_put(strstreambuf *this, char *g, streamsize len, char *p)
12204 TRACE("(%p %p %ld %p)\n", this, g, len, p);
12206 basic_streambuf_char_ctor(&this->base);
12207 this->base.vtable = &MSVCP_strstreambuf_vtable;
12209 strstreambuf__Init(this, len, g, p, 0);
12210 return this;
12213 /* ?_Tidy@strstreambuf@std@@IAEXXZ */
12214 /* ?_Tidy@strstreambuf@std@@IEAAXXZ */
12215 DEFINE_THISCALL_WRAPPER(strstreambuf__Tidy, 4)
12216 void __thiscall strstreambuf__Tidy(strstreambuf *this)
12218 TRACE("(%p)\n", this);
12220 if((this->strmode & STRSTATE_Allocated) && !(this->strmode & STRSTATE_Frozen)) {
12221 if(this->pfree)
12222 this->pfree(basic_streambuf_char_eback(&this->base));
12223 else
12224 MSVCRT_operator_delete(basic_streambuf_char_eback(&this->base));
12227 this->endsave = NULL;
12228 this->seekhigh = NULL;
12229 this->strmode &= ~(STRSTATE_Allocated | STRSTATE_Frozen);
12230 basic_streambuf_char_setg(&this->base, NULL, NULL, NULL);
12231 basic_streambuf_char_setp(&this->base, NULL, NULL);
12234 /* ??1strstreambuf@std@@UAE@XZ */
12235 /* ??1strstreambuf@std@@UEAA@XZ */
12236 DEFINE_THISCALL_WRAPPER(strstreambuf_dtor, 4)
12237 void __thiscall strstreambuf_dtor(strstreambuf *this)
12239 TRACE("(%p)\n", this);
12241 strstreambuf__Tidy(this);
12242 basic_streambuf_char_dtor(&this->base);
12245 DEFINE_THISCALL_WRAPPER(strstreambuf_vector_dtor, 8)
12246 strstreambuf* __thiscall strstreambuf_vector_dtor(strstreambuf *this, unsigned int flags)
12248 TRACE("(%p %x)\n", this, flags);
12249 if(flags & 2) {
12250 /* we have an array, with the number of elements stored before the first object */
12251 INT_PTR i, *ptr = (INT_PTR *)this-1;
12253 for(i=*ptr-1; i>=0; i--)
12254 strstreambuf_dtor(this+i);
12255 MSVCRT_operator_delete(ptr);
12256 } else {
12257 strstreambuf_dtor(this);
12258 if(flags & 1)
12259 MSVCRT_operator_delete(this);
12262 return this;
12265 /* ?freeze@strstreambuf@std@@QAEX_N@Z */
12266 /* ?freeze@strstreambuf@std@@QEAAX_N@Z */
12267 DEFINE_THISCALL_WRAPPER(strstreambuf_freeze, 8)
12268 void __thiscall strstreambuf_freeze(strstreambuf *this, MSVCP_bool freeze)
12270 TRACE("(%p %d)\n", this, freeze);
12272 if(!freeze == !(this->strmode *STRSTATE_Frozen))
12273 return;
12275 if(freeze) {
12276 this->strmode |= STRSTATE_Frozen;
12277 this->endsave = basic_streambuf_char_epptr(&this->base);
12278 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
12279 basic_streambuf_char_pptr(&this->base), basic_streambuf_char_eback(&this->base));
12280 }else {
12281 this->strmode &= ~STRSTATE_Frozen;
12282 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
12283 basic_streambuf_char_pptr(&this->base), this->endsave);
12287 /* ?overflow@strstreambuf@std@@MAEHH@Z */
12288 /* ?overflow@strstreambuf@std@@MEAAHH@Z */
12289 DEFINE_THISCALL_WRAPPER(strstreambuf_overflow, 8)
12290 int __thiscall strstreambuf_overflow(strstreambuf *this, int c)
12292 MSVCP_size_t old_size, size;
12293 char *ptr, *buf;
12295 TRACE("(%p %d)\n", this, c);
12297 if(c == EOF)
12298 return !EOF;
12300 if(this->strmode & STRSTATE_Frozen)
12301 return EOF;
12303 ptr = basic_streambuf_char_pptr(&this->base);
12304 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
12305 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
12307 if(!(this->strmode & STRSTATE_Dynamic) || (this->strmode & STRSTATE_Constant))
12308 return EOF;
12310 ptr = basic_streambuf_char_eback(&this->base);
12311 old_size = ptr ? basic_streambuf_char_epptr(&this->base) - ptr : 0;
12313 size = old_size + old_size/2;
12314 if(size < this->minsize)
12315 size = this->minsize;
12317 if(this->palloc)
12318 buf = this->palloc(size);
12319 else
12320 buf = MSVCRT_operator_new(size);
12321 if(!buf)
12322 return EOF;
12324 memcpy(buf, ptr, old_size);
12325 if(this->strmode & STRSTATE_Allocated) {
12326 if(this->pfree)
12327 this->pfree(ptr);
12328 else
12329 MSVCRT_operator_delete(ptr);
12332 this->strmode |= STRSTATE_Allocated;
12333 if(!old_size) {
12334 this->seekhigh = buf;
12335 basic_streambuf_char_setp(&this->base, buf, buf+size);
12336 basic_streambuf_char_setg(&this->base, buf, buf, buf);
12337 }else {
12338 this->seekhigh = this->seekhigh-ptr+buf;
12339 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base)-ptr+buf,
12340 basic_streambuf_char_pptr(&this->base)-ptr+buf, buf+size);
12341 basic_streambuf_char_setg(&this->base, buf, basic_streambuf_char_gptr(&this->base)-ptr+buf,
12342 basic_streambuf_char_pptr(&this->base));
12345 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
12348 /* ?pbackfail@strstreambuf@std@@MAEHH@Z */
12349 /* ?pbackfail@strstreambuf@std@@MEAAHH@Z */
12350 DEFINE_THISCALL_WRAPPER(strstreambuf_pbackfail, 8)
12351 int __thiscall strstreambuf_pbackfail(strstreambuf *this, int c)
12353 char *ptr = basic_streambuf_char_gptr(&this->base);
12355 TRACE("(%p %d)\n", this, c);
12357 if(ptr<=basic_streambuf_char_eback(&this->base)
12358 || ((this->strmode & STRSTATE_Constant) && c!=ptr[-1]))
12359 return EOF;
12361 basic_streambuf_char_gbump(&this->base, -1);
12362 if(c == EOF)
12363 return !EOF;
12364 if(this->strmode & STRSTATE_Constant)
12365 return (unsigned char)c;
12367 return (unsigned char)(ptr[0] = c);
12370 /* ?seekoff@strstreambuf@std@@MAE?AV?$fpos@H@2@JHH@Z */
12371 /* ?seekoff@strstreambuf@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
12372 DEFINE_THISCALL_WRAPPER(strstreambuf_seekoff, 20)
12373 fpos_int* __thiscall strstreambuf_seekoff(strstreambuf *this, fpos_int *ret, streamoff off, int way, int mode)
12375 char *eback = basic_streambuf_char_eback(&this->base);
12376 char *pptr = basic_streambuf_char_pptr(&this->base);
12377 char *gptr = basic_streambuf_char_gptr(&this->base);
12379 TRACE("(%p %p %ld %d %d)\n", this, ret, off, way, mode);
12381 ret->off = 0;
12382 ret->state = 0;
12384 if(pptr > this->seekhigh)
12385 this->seekhigh = pptr;
12387 if((mode & OPENMODE_in) && gptr) {
12388 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
12389 off += gptr-eback;
12390 else if(way == SEEKDIR_end)
12391 off += this->seekhigh-eback;
12392 else if(way != SEEKDIR_beg)
12393 off = -1;
12395 if(off<0 || off>this->seekhigh-eback) {
12396 off = -1;
12397 }else {
12398 basic_streambuf_char_gbump(&this->base, eback-gptr+off);
12399 if((mode & OPENMODE_out) && pptr) {
12400 basic_streambuf_char_setp_next(&this->base, eback,
12401 gptr, basic_streambuf_char_epptr(&this->base));
12404 }else if((mode & OPENMODE_out) && pptr) {
12405 if(way == SEEKDIR_cur)
12406 off += pptr-eback;
12407 else if(way == SEEKDIR_end)
12408 off += this->seekhigh-eback;
12409 else if(way != SEEKDIR_beg)
12410 off = -1;
12412 if(off<0 || off>this->seekhigh-eback)
12413 off = -1;
12414 else
12415 basic_streambuf_char_pbump(&this->base, eback-pptr+off);
12416 }else {
12417 off = -1;
12420 ret->pos = off;
12421 return ret;
12424 /* ?seekpos@strstreambuf@std@@MAE?AV?$fpos@H@2@V32@H@Z */
12425 /* ?seekpos@strstreambuf@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
12426 DEFINE_THISCALL_WRAPPER(strstreambuf_seekpos, 36)
12427 fpos_int* __thiscall strstreambuf_seekpos(strstreambuf *this, fpos_int *ret, fpos_int pos, int mode)
12429 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
12431 if(pos.off==-1 && pos.pos==0 && pos.state==0) {
12432 *ret = pos;
12433 return ret;
12436 return strstreambuf_seekoff(this, ret, pos.off, SEEKDIR_beg, mode);
12439 /* ?underflow@strstreambuf@std@@MAEHXZ */
12440 /* ?underflow@strstreambuf@std@@MEAAHXZ */
12441 DEFINE_THISCALL_WRAPPER(strstreambuf_underflow, 4)
12442 int __thiscall strstreambuf_underflow(strstreambuf *this)
12444 char *gptr = basic_streambuf_char_gptr(&this->base);
12445 char *pptr;
12447 TRACE("(%p)\n", this);
12449 if(!gptr)
12450 return EOF;
12452 if(gptr < basic_streambuf_char_egptr(&this->base))
12453 return (unsigned char)(*gptr);
12455 pptr = basic_streambuf_char_gptr(&this->base);
12456 if(pptr > this->seekhigh)
12457 this->seekhigh = pptr;
12459 if(this->seekhigh <= gptr)
12460 return EOF;
12462 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base),
12463 gptr, this->seekhigh);
12464 return (unsigned char)(*gptr);
12467 static inline basic_ios_char* ostrstream_to_basic_ios(ostrstream *ptr)
12469 return (basic_ios_char*)((char*)ptr+ostrstream_vbtable[1]);
12472 static inline ostrstream* ostrstream_from_basic_ios(basic_ios_char *ptr)
12474 return (ostrstream*)((char*)ptr-ostrstream_vbtable[1]);
12477 /* ??0ostrstream@std@@QAE@PADHH@Z */
12478 DEFINE_THISCALL_WRAPPER(ostrstream_ctor, 20)
12479 ostrstream* __thiscall ostrstream_ctor(ostrstream *this, char *buf, streamsize size, int mode, MSVCP_bool virt_init)
12481 basic_ios_char *basic_ios;
12483 TRACE("(%p %p %ld %d %d)\n", this, buf, size, mode, virt_init);
12485 if(virt_init) {
12486 this->base.vbtable = ostrstream_vbtable;
12487 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
12488 basic_ios_char_ctor(basic_ios);
12489 }else {
12490 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
12493 strstreambuf_ctor_get_put(&this->buf, buf, size,
12494 buf && (mode & OPENMODE_app) ? buf+strlen(buf) : buf);
12495 basic_ostream_char_ctor(&this->base, &this->buf.base, FALSE, FALSE);
12496 basic_ios->base.vtable = &MSVCP_ostrstream_vtable;
12497 return this;
12500 /* ??1ostrstream@std@@UAE@XZ */
12501 /* ??1ostrstream@std@@UEAA@XZ */
12502 DEFINE_THISCALL_WRAPPER(ostrstream_dtor, 4)
12503 void __thiscall ostrstream_dtor(basic_ios_char *base)
12505 ostrstream *this = ostrstream_from_basic_ios(base);
12507 TRACE("(%p)\n", this);
12509 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
12510 strstreambuf_dtor(&this->buf);
12513 static void ostrstream_vbase_dtor(ostrstream *this)
12515 TRACE("(%p)\n", this);
12517 ostrstream_dtor(ostrstream_to_basic_ios(this));
12518 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
12521 DEFINE_THISCALL_WRAPPER(ostrstream_vector_dtor, 8)
12522 ostrstream* __thiscall ostrstream_vector_dtor(basic_ios_char *base, unsigned int flags)
12524 ostrstream *this = ostrstream_from_basic_ios(base);
12526 TRACE("(%p %x)\n", this, flags);
12528 if(flags & 2) {
12529 /* we have an array, with the number of elements stored before the first object */
12530 INT_PTR i, *ptr = (INT_PTR *)this-1;
12532 for(i=*ptr-1; i>=0; i--)
12533 ostrstream_vbase_dtor(this+i);
12534 MSVCRT_operator_delete(ptr);
12535 } else {
12536 ostrstream_vbase_dtor(this);
12537 if(flags & 1)
12538 MSVCRT_operator_delete(this);
12541 return this;
12544 static inline istrstream* istrstream_from_basic_ios(basic_ios_char *ptr)
12546 return (istrstream*)((char*)ptr-istrstream_vbtable[1]);
12549 /* ??1istrstream@std@@UAE@XZ */
12550 /* ??1istrstream@std@@UEAA@XZ */
12551 DEFINE_THISCALL_WRAPPER(istrstream_dtor, 4)
12552 void __thiscall istrstream_dtor(basic_ios_char *base)
12554 istrstream *this = istrstream_from_basic_ios(base);
12556 TRACE("(%p)\n", this);
12558 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
12559 strstreambuf_dtor(&this->buf);
12562 static inline basic_ios_char* strstream_to_basic_ios(strstream *ptr)
12564 return (basic_ios_char*)((char*)ptr+strstream_vbtable1[1]);
12567 static inline strstream* strstream_from_basic_ios(basic_ios_char *ptr)
12569 return (strstream*)((char*)ptr-strstream_vbtable1[1]);
12572 /* ??0strstream@std@@QAE@PADHH@Z */
12573 /* ??0strstream@std@@QEAA@PEAD_JH@Z */
12574 DEFINE_THISCALL_WRAPPER(strstream_ctor, 20)
12575 strstream* __thiscall strstream_ctor(strstream *this, char *buf, streamsize size, int mode, MSVCP_bool virt_init)
12577 basic_ios_char *basic_ios;
12579 TRACE("(%p %p %ld %d %d)\n", this, buf, size, mode, virt_init);
12581 if(virt_init) {
12582 this->base.base1.vbtable = strstream_vbtable1;
12583 this->base.base2.vbtable = strstream_vbtable2;
12584 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12585 basic_ios_char_ctor(basic_ios);
12586 }else {
12587 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12590 strstreambuf_ctor_get_put(&this->buf, buf, size,
12591 buf && (mode & OPENMODE_app) ? buf+strlen(buf) : buf);
12592 basic_iostream_char_ctor(&this->base, &this->buf.base, FALSE);
12593 basic_ios->base.vtable = &MSVCP_strstream_vtable;
12594 return this;
12597 /* ??1strstream@std@@UAE@XZ */
12598 /* ??1strstream@std@@UEAA@XZ */
12599 DEFINE_THISCALL_WRAPPER(strstream_dtor, 4)
12600 void __thiscall strstream_dtor(basic_ios_char *base)
12602 strstream *this = strstream_from_basic_ios(base);
12604 TRACE("(%p)\n", this);
12606 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
12607 strstreambuf_dtor(&this->buf);
12610 static void strstream_vbase_dtor(strstream *this)
12612 TRACE("(%p)\n", this);
12614 strstream_dtor(strstream_to_basic_ios(this));
12615 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
12618 DEFINE_THISCALL_WRAPPER(strstream_vector_dtor, 8)
12619 strstream* __thiscall strstream_vector_dtor(basic_ios_char *base, unsigned int flags)
12621 strstream *this = strstream_from_basic_ios(base);
12623 TRACE("(%p %x)\n", this, flags);
12625 if(flags & 2) {
12626 /* we have an array, with the number of elements stored before the first object */
12627 INT_PTR i, *ptr = (INT_PTR *)this-1;
12629 for(i=*ptr-1; i>=0; i--)
12630 strstream_vbase_dtor(this+i);
12631 MSVCRT_operator_delete(ptr);
12632 } else {
12633 strstream_vbase_dtor(this);
12634 if(flags & 1)
12635 MSVCRT_operator_delete(this);
12638 return this;
12641 static void __cdecl setprecision_func(ios_base *base, streamsize prec)
12643 ios_base_precision_set(base, prec);
12646 /* ?setprecision@std@@YA?AU?$_Smanip@H@1@H@Z */
12647 /* ?setprecision@std@@YA?AU?$_Smanip@_J@1@_J@Z */
12648 manip_streamsize* __cdecl setprecision(manip_streamsize *ret, streamsize prec)
12650 TRACE("(%p %ld)\n", ret, prec);
12652 ret->pfunc = setprecision_func;
12653 ret->arg = prec;
12654 return ret;
12657 static void __cdecl setw_func(ios_base *base, streamsize width)
12659 ios_base_width_set(base, width);
12662 /* ?setw@std@@YA?AU?$_Smanip@H@1@H@Z */
12663 /* ?setw@std@@YA?AU?$_Smanip@_J@1@_J@Z */
12664 manip_streamsize* __cdecl setw(manip_streamsize *ret, streamsize width)
12666 TRACE("(%p %ld)\n", ret, width);
12668 ret->pfunc = setw_func;
12669 ret->arg = width;
12670 return ret;
12673 static void __cdecl resetioflags_func(ios_base *base, int mask)
12675 ios_base_setf_mask(base, 0, mask);
12678 /* ?resetiosflags@std@@YA?AU?$_Smanip@H@1@H@Z */
12679 manip_int* __cdecl resetiosflags(manip_int *ret, int mask)
12681 TRACE("(%p %d)\n", ret, mask);
12683 ret->pfunc = resetioflags_func;
12684 ret->arg = mask;
12685 return ret;
12688 static void __cdecl setiosflags_func(ios_base *base, int mask)
12690 ios_base_setf_mask(base, FMTFLAG_mask, mask);
12693 /* ?setiosflags@std@@YA?AU?$_Smanip@H@1@H@Z */
12694 manip_int* __cdecl setiosflags(manip_int *ret, int mask)
12696 TRACE("(%p %d)\n", ret, mask);
12698 ret->pfunc = setiosflags_func;
12699 ret->arg = mask;
12700 return ret;
12703 static void __cdecl setbase_func(ios_base *base, int set_base)
12705 if(set_base == 10)
12706 set_base = FMTFLAG_dec;
12707 else if(set_base == 8)
12708 set_base = FMTFLAG_oct;
12709 else if(set_base == 16)
12710 set_base = FMTFLAG_hex;
12711 else
12712 set_base = 0;
12714 ios_base_setf_mask(base, set_base, FMTFLAG_basefield);
12717 /* ?setbase@std@@YA?AU?$_Smanip@H@1@H@Z */
12718 manip_int* __cdecl setbase(manip_int *ret, int base)
12720 TRACE("(%p %d)\n", ret, base);
12722 ret->pfunc = setbase_func;
12723 ret->arg = base;
12724 return ret;
12727 static basic_filebuf_char filebuf_char_stdin;
12728 /* ?cin@std@@3V?$basic_istream@DU?$char_traits@D@std@@@1@A */
12729 struct {
12730 basic_istream_char obj;
12731 basic_ios_char vbase;
12732 } cin = { { 0 } };
12733 /* ?_Ptr_cin@std@@3PAV?$basic_istream@DU?$char_traits@D@std@@@1@A */
12734 /* ?_Ptr_cin@std@@3PEAV?$basic_istream@DU?$char_traits@D@std@@@1@EA */
12735 basic_istream_char *_Ptr_cin = &cin.obj;
12737 static basic_filebuf_wchar filebuf_short_stdin;
12738 /* ?wcin@std@@3V?$basic_istream@GU?$char_traits@G@std@@@1@A */
12739 struct {
12740 basic_istream_wchar obj;
12741 basic_ios_wchar vbase;
12742 } ucin = { { 0 } };
12743 /* ?_Ptr_wcin@std@@3PAV?$basic_istream@GU?$char_traits@G@std@@@1@A */
12744 /* ?_Ptr_wcin@std@@3PEAV?$basic_istream@GU?$char_traits@G@std@@@1@EA */
12745 basic_istream_wchar *_Ptr_ucin = &ucin.obj;
12747 static basic_filebuf_wchar filebuf_wchar_stdin;
12748 /* ?wcin@std@@3V?$basic_istream@_WU?$char_traits@_W@std@@@1@A */
12749 struct {
12750 basic_istream_wchar obj;
12751 basic_ios_wchar vbase;
12752 } wcin = { { 0 } };
12753 /* ?_Ptr_wcin@std@@3PAV?$basic_istream@_WU?$char_traits@_W@std@@@1@A */
12754 /* ?_Ptr_wcin@std@@3PEAV?$basic_istream@_WU?$char_traits@_W@std@@@1@EA */
12755 basic_istream_wchar *_Ptr_wcin = &wcin.obj;
12757 static basic_filebuf_char filebuf_char_stdout;
12758 /* ?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12759 struct {
12760 basic_ostream_char obj;
12761 basic_ios_char vbase;
12762 } cout = { { 0 } };
12763 /* ?_Ptr_cout@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12764 /* ?_Ptr_cout@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
12765 basic_ostream_char *_Ptr_cout = &cout.obj;
12767 static basic_filebuf_wchar filebuf_short_stdout;
12768 /* ?wcout@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12769 struct {
12770 basic_ostream_wchar obj;
12771 basic_ios_wchar vbase;
12772 } ucout = { { 0 } };
12773 /* ?_Ptr_wcout@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12774 /* ?_Ptr_wcout@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
12775 basic_ostream_wchar *_Ptr_ucout = &ucout.obj;
12777 static basic_filebuf_wchar filebuf_wchar_stdout;
12778 /* ?wcout@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12779 struct {
12780 basic_ostream_wchar obj;
12781 basic_ios_wchar vbase;
12782 } wcout = { { 0 } };
12783 /* ?_Ptr_wcout@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12784 /* ?_Ptr_wcout@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
12785 basic_ostream_wchar *_Ptr_wcout = &wcout.obj;
12787 static basic_filebuf_char filebuf_char_stderr;
12788 /* ?cerr@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12789 struct {
12790 basic_ostream_char obj;
12791 basic_ios_char vbase;
12792 } cerr = { { 0 } };
12793 /* ?_Ptr_cerr@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12794 /* ?_Ptr_cerr@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
12795 basic_ostream_char *_Ptr_cerr = &cerr.obj;
12797 static basic_filebuf_wchar filebuf_short_stderr;
12798 /* ?wcerr@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12799 struct {
12800 basic_ostream_wchar obj;
12801 basic_ios_wchar vbase;
12802 } ucerr = { { 0 } };
12803 /* ?_Ptr_wcerr@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12804 /* ?_Ptr_wcerr@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
12805 basic_ostream_wchar *_Ptr_ucerr = &ucerr.obj;
12807 static basic_filebuf_wchar filebuf_wchar_stderr;
12808 /* ?wcerr@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12809 struct {
12810 basic_ostream_wchar obj;
12811 basic_ios_wchar vbase;
12812 } wcerr = { { 0 } };
12813 /* ?_Ptr_wcerr@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12814 /* ?_Ptr_wcerr@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
12815 basic_ostream_wchar *_Ptr_wcerr = &wcerr.obj;
12817 static basic_filebuf_char filebuf_char_log;
12818 /* ?clog@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12819 struct {
12820 basic_ostream_char obj;
12821 basic_ios_char vbase;
12822 } clog = { { 0 } };
12823 /* ?_Ptr_clog@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12824 /* ?_Ptr_clog@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
12825 basic_ostream_char *_Ptr_clog = &clog.obj;
12827 static basic_filebuf_wchar filebuf_short_log;
12828 /* ?wclog@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12829 struct {
12830 basic_ostream_wchar obj;
12831 basic_ios_wchar vbase;
12832 } uclog = { { 0 } };
12833 /* ?_Ptr_wclog@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12834 /* ?_Ptr_wclog@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
12835 basic_ostream_wchar *_Ptr_uclog = &uclog.obj;
12837 static basic_filebuf_wchar filebuf_wchar_log;
12838 /* ?wclog@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12839 struct {
12840 basic_ostream_wchar obj;
12841 basic_ios_wchar vbase;
12842 } wclog = { { 0 } };
12843 /* ?_Ptr_wclog@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12844 /* ?_Ptr_wclog@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
12845 basic_ostream_wchar *_Ptr_wclog = &wclog.obj;
12847 /* ?_Init_cnt@Init@ios_base@std@@0HA */
12848 int ios_base_Init__Init_cnt = -1;
12850 /* ?_Init_ctor@Init@ios_base@std@@CAXPAV123@@Z */
12851 /* ?_Init_ctor@Init@ios_base@std@@CAXPEAV123@@Z */
12852 static void ios_base_Init__Init_ctor(void *this)
12854 TRACE("(%p)\n", this);
12856 if(ios_base_Init__Init_cnt < 0)
12857 ios_base_Init__Init_cnt = 1;
12858 else
12859 ios_base_Init__Init_cnt++;
12862 /* ??0Init@ios_base@std@@QAE@XZ */
12863 /* ??0Init@ios_base@std@@QEAA@XZ */
12864 DEFINE_THISCALL_WRAPPER(ios_base_Init_ctor, 4)
12865 void* __thiscall ios_base_Init_ctor(void *this)
12867 ios_base_Init__Init_ctor(this);
12868 return this;
12871 /* ?_Init_dtor@Init@ios_base@std@@CAXPAV123@@Z */
12872 /* ?_Init_dtor@Init@ios_base@std@@CAXPEAV123@@Z */
12873 static void ios_base_Init__Init_dtor(void *this)
12875 TRACE("(%p)\n", this);
12877 ios_base_Init__Init_cnt--;
12878 if(!ios_base_Init__Init_cnt) {
12879 basic_ostream_char_flush(&cout.obj);
12880 basic_ostream_char_flush(&cerr.obj);
12881 basic_ostream_char_flush(&clog.obj);
12885 /* ??1Init@ios_base@std@@QAE@XZ */
12886 /* ??1Init@ios_base@std@@QEAA@XZ */
12887 DEFINE_THISCALL_WRAPPER(ios_base_Init_dtor, 4)
12888 void __thiscall ios_base_Init_dtor(void *this)
12890 ios_base_Init__Init_dtor(this);
12893 /* ??4Init@ios_base@std@@QAEAAV012@ABV012@@Z */
12894 /* ??4Init@ios_base@std@@QEAAAEAV012@AEBV012@@Z */
12895 DEFINE_THISCALL_WRAPPER(ios_base_Init_op_assign, 8)
12896 void* __thiscall ios_base_Init_op_assign(void *this, void *rhs)
12898 TRACE("(%p %p)\n", this, rhs);
12899 return this;
12902 /* ?_Init_cnt@_Winit@std@@0HA */
12903 int _Winit__Init_cnt = -1;
12905 /* ??0_Winit@std@@QAE@XZ */
12906 /* ??0_Winit@std@@QEAA@XZ */
12907 DEFINE_THISCALL_WRAPPER(_Winit_ctor, 4)
12908 void* __thiscall _Winit_ctor(void *this)
12910 TRACE("(%p)\n", this);
12912 if(_Winit__Init_cnt < 0)
12913 _Winit__Init_cnt = 1;
12914 else
12915 _Winit__Init_cnt++;
12917 return this;
12920 /* ??1_Winit@std@@QAE@XZ */
12921 /* ??1_Winit@std@@QAE@XZ */
12922 DEFINE_THISCALL_WRAPPER(_Winit_dtor, 4)
12923 void __thiscall _Winit_dtor(void *this)
12925 TRACE("(%p)\n", this);
12927 _Winit__Init_cnt--;
12928 if(!_Winit__Init_cnt) {
12929 basic_ostream_wchar_flush(&wcout.obj);
12930 basic_ostream_wchar_flush(&wcerr.obj);
12931 basic_ostream_wchar_flush(&wclog.obj);
12935 /* ??4_Winit@std@@QAEAAV01@ABV01@@Z */
12936 /* ??4_Winit@std@@QEAAAEAV01@AEBV01@@Z */
12937 DEFINE_THISCALL_WRAPPER(_Winit_op_assign, 8)
12938 void* __thiscall _Winit_op_assign(void *this, void *rhs)
12940 TRACE("(%p %p)\n", this, rhs);
12941 return this;
12944 void init_io(void *base)
12946 #ifdef __x86_64__
12947 init_iosb_rtti(base);
12948 init_ios_base_rtti(base);
12949 init_basic_ios_char_rtti(base);
12950 init_basic_ios_wchar_rtti(base);
12951 init_basic_ios_short_rtti(base);
12952 init_basic_streambuf_char_rtti(base);
12953 init_basic_streambuf_wchar_rtti(base);
12954 init_basic_streambuf_short_rtti(base);
12955 init_basic_filebuf_char_rtti(base);
12956 init_basic_filebuf_wchar_rtti(base);
12957 init_basic_filebuf_short_rtti(base);
12958 init_basic_stringbuf_char_rtti(base);
12959 init_basic_stringbuf_wchar_rtti(base);
12960 init_basic_stringbuf_short_rtti(base);
12961 init_basic_ostream_char_rtti(base);
12962 init_basic_ostream_wchar_rtti(base);
12963 init_basic_ostream_short_rtti(base);
12964 init_basic_istream_char_rtti(base);
12965 init_basic_istream_wchar_rtti(base);
12966 init_basic_istream_short_rtti(base);
12967 init_basic_iostream_char_rtti(base);
12968 init_basic_iostream_wchar_rtti(base);
12969 init_basic_iostream_short_rtti(base);
12970 init_basic_ofstream_char_rtti(base);
12971 init_basic_ofstream_wchar_rtti(base);
12972 init_basic_ofstream_short_rtti(base);
12973 init_basic_ifstream_char_rtti(base);
12974 init_basic_ifstream_wchar_rtti(base);
12975 init_basic_ifstream_short_rtti(base);
12976 init_basic_fstream_char_rtti(base);
12977 init_basic_fstream_wchar_rtti(base);
12978 init_basic_fstream_short_rtti(base);
12979 init_basic_ostringstream_char_rtti(base);
12980 init_basic_ostringstream_wchar_rtti(base);
12981 init_basic_ostringstream_short_rtti(base);
12982 init_basic_istringstream_char_rtti(base);
12983 init_basic_istringstream_wchar_rtti(base);
12984 init_basic_istringstream_short_rtti(base);
12985 init_basic_stringstream_char_rtti(base);
12986 init_basic_stringstream_wchar_rtti(base);
12987 init_basic_stringstream_short_rtti(base);
12988 init_strstreambuf_rtti(base);
12989 init_strstream_rtti(base);
12990 init_ostrstream_rtti(base);
12991 #endif
12993 basic_filebuf_char_ctor_file(&filebuf_char_stdin, stdin);
12994 basic_istream_char_ctor(&cin.obj, &filebuf_char_stdin.base, FALSE/*FIXME*/, TRUE);
12996 basic_filebuf_short_ctor_file(&filebuf_short_stdin, stdin);
12997 basic_istream_short_ctor(&ucin.obj, &filebuf_short_stdin.base, FALSE/*FIXME*/, TRUE);
12999 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stdin, stdin);
13000 basic_istream_wchar_ctor(&wcin.obj, &filebuf_wchar_stdin.base, FALSE/*FIXME*/, TRUE);
13002 basic_filebuf_char_ctor_file(&filebuf_char_stdout, stdout);
13003 basic_ostream_char_ctor(&cout.obj, &filebuf_char_stdout.base, FALSE/*FIXME*/, TRUE);
13005 basic_filebuf_short_ctor_file(&filebuf_short_stdout, stdout);
13006 basic_ostream_short_ctor(&ucout.obj, &filebuf_short_stdout.base, FALSE/*FIXME*/, TRUE);
13008 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stdout, stdout);
13009 basic_ostream_wchar_ctor(&wcout.obj, &filebuf_wchar_stdout.base, FALSE/*FIXME*/, TRUE);
13011 basic_filebuf_char_ctor_file(&filebuf_char_stderr, stderr);
13012 basic_ostream_char_ctor(&cerr.obj, &filebuf_char_stderr.base, FALSE/*FIXME*/, TRUE);
13014 basic_filebuf_short_ctor_file(&filebuf_short_stderr, stderr);
13015 basic_ostream_short_ctor(&ucerr.obj, &filebuf_short_stderr.base, FALSE/*FIXME*/, TRUE);
13017 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stderr, stderr);
13018 basic_ostream_wchar_ctor(&wcerr.obj, &filebuf_wchar_stderr.base, FALSE/*FIXME*/, TRUE);
13020 basic_filebuf_char_ctor_file(&filebuf_char_log, stderr);
13021 basic_ostream_char_ctor(&clog.obj, &filebuf_char_log.base, FALSE/*FIXME*/, TRUE);
13023 basic_filebuf_short_ctor_file(&filebuf_short_log, stderr);
13024 basic_ostream_short_ctor(&uclog.obj, &filebuf_short_log.base, FALSE/*FIXME*/, TRUE);
13026 basic_filebuf_wchar_ctor_file(&filebuf_wchar_log, stderr);
13027 basic_ostream_wchar_ctor(&wclog.obj, &filebuf_wchar_log.base, FALSE/*FIXME*/, TRUE);
13030 void free_io(void)
13032 basic_istream_char_vbase_dtor(&cin.obj);
13033 basic_filebuf_char_dtor(&filebuf_char_stdin);
13035 basic_istream_wchar_vbase_dtor(&ucin.obj);
13036 basic_filebuf_wchar_dtor(&filebuf_short_stdin);
13038 basic_istream_wchar_vbase_dtor(&wcin.obj);
13039 basic_filebuf_wchar_dtor(&filebuf_wchar_stdin);
13041 basic_ostream_char_vbase_dtor(&cout.obj);
13042 basic_filebuf_char_dtor(&filebuf_char_stdout);
13044 basic_ostream_wchar_vbase_dtor(&ucout.obj);
13045 basic_filebuf_wchar_dtor(&filebuf_short_stdout);
13047 basic_ostream_wchar_vbase_dtor(&wcout.obj);
13048 basic_filebuf_wchar_dtor(&filebuf_wchar_stdout);
13050 basic_ostream_char_vbase_dtor(&cerr.obj);
13051 basic_filebuf_char_dtor(&filebuf_char_stderr);
13053 basic_ostream_wchar_vbase_dtor(&ucerr.obj);
13054 basic_filebuf_wchar_dtor(&filebuf_short_stderr);
13056 basic_ostream_wchar_vbase_dtor(&wcerr.obj);
13057 basic_filebuf_wchar_dtor(&filebuf_wchar_stderr);
13059 basic_ostream_char_vbase_dtor(&clog.obj);
13060 basic_filebuf_char_dtor(&filebuf_char_log);
13062 basic_ostream_wchar_vbase_dtor(&uclog.obj);
13063 basic_filebuf_wchar_dtor(&filebuf_short_log);
13065 basic_ostream_wchar_vbase_dtor(&wclog.obj);
13066 basic_filebuf_wchar_dtor(&filebuf_wchar_log);