msvcp60: Remove basic_streambuf<wchar> code.
[wine.git] / dlls / msvcp60 / ios.c
blobd7ad0494680836d09f02c96a6f3065bc51e6f1fa
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
20 #include <stdarg.h>
21 #include <stdio.h>
22 #include <limits.h>
23 #include <share.h>
24 #include <locale.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 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(%Id %I64d %d)", fpos->off, 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 int state;
69 basic_string_char *str;
70 bool close;
71 locale loc;
72 FILE *file;
73 } basic_filebuf_char;
75 typedef struct {
76 basic_streambuf_wchar base;
77 codecvt_wchar *cvt;
78 int state0;
79 int state;
80 basic_string_char *str;
81 bool close;
82 locale loc;
83 FILE *file;
84 } basic_filebuf_wchar;
86 typedef enum {
87 STRINGBUF_allocated = 1,
88 STRINGBUF_no_write = 2,
89 STRINGBUF_no_read = 4,
90 STRINGBUF_append = 8,
91 STRINGBUF_at_end = 16
92 } basic_stringbuf_state;
94 typedef struct {
95 basic_streambuf_char base;
96 char *pendsave;
97 char *seekhigh;
98 int alsize;
99 int state;
100 char allocator; /* empty struct */
101 } basic_stringbuf_char;
103 typedef struct {
104 basic_streambuf_wchar base;
105 wchar_t *pendsave;
106 wchar_t *seekhigh;
107 int alsize;
108 int state;
109 char allocator; /* empty struct */
110 } basic_stringbuf_wchar;
112 typedef struct {
113 ios_base base;
114 basic_streambuf_char *strbuf;
115 struct _basic_ostream_char *stream;
116 char fillch;
117 } basic_ios_char;
119 typedef struct {
120 ios_base base;
121 basic_streambuf_wchar *strbuf;
122 struct _basic_ostream_wchar *stream;
123 wchar_t fillch;
124 } basic_ios_wchar;
126 typedef struct _basic_ostream_char {
127 const int *vbtable;
128 /* virtual inheritance
129 * basic_ios_char basic_ios;
131 } basic_ostream_char;
133 typedef struct _basic_ostream_wchar {
134 const int *vbtable;
135 /* virtual inheritance
136 * basic_ios_wchar basic_ios;
138 } basic_ostream_wchar;
140 typedef struct {
141 const int *vbtable;
142 streamsize count;
143 /* virtual inheritance
144 * basic_ios_char basic_ios;
146 } basic_istream_char;
148 typedef struct {
149 const int *vbtable;
150 streamsize count;
151 /* virtual inheritance
152 * basic_ios_wchar basic_ios;
154 } basic_istream_wchar;
156 typedef struct {
157 basic_istream_char base1;
158 basic_ostream_char base2;
159 /* virtual inheritance
160 * basic_ios_char basic_ios;
162 } basic_iostream_char;
164 typedef struct {
165 basic_istream_wchar base1;
166 basic_ostream_wchar base2;
167 /* virtual inheritance
168 * basic_ios_wchar basic_ios;
170 } basic_iostream_wchar;
172 typedef struct {
173 basic_ostream_char base;
174 basic_filebuf_char filebuf;
175 /* virtual inheritance
176 * basic_ios_char basic_ios;
178 } basic_ofstream_char;
180 typedef struct {
181 basic_ostream_wchar base;
182 basic_filebuf_wchar filebuf;
183 /* virtual inheritance
184 * basic_ios_wchar basic_ios;
186 } basic_ofstream_wchar;
188 typedef struct {
189 basic_istream_char base;
190 basic_filebuf_char filebuf;
191 /* virtual inheritance
192 * basic_ios_char basic_ios;
194 } basic_ifstream_char;
196 typedef struct {
197 basic_istream_wchar base;
198 basic_filebuf_wchar filebuf;
199 /* virtual inheritance
200 * basic_ios_wchar basic_ios;
202 } basic_ifstream_wchar;
204 typedef struct {
205 basic_iostream_char base;
206 basic_filebuf_char filebuf;
207 /* virtual inheritance
208 * basic_ios_char basic_ios;
210 } basic_fstream_char;
212 typedef struct {
213 basic_iostream_wchar base;
214 basic_filebuf_wchar filebuf;
215 /* virtual inheritance
216 * basic_ios_char basic_ios;
218 } basic_fstream_wchar;
220 typedef struct {
221 basic_ostream_char base;
222 basic_stringbuf_char strbuf;
223 /* virtual inheritance
224 * basic_ios_char basic_ios;
226 } basic_ostringstream_char;
228 typedef struct {
229 basic_ostream_wchar base;
230 basic_stringbuf_wchar strbuf;
231 /* virtual inheritance
232 * basic_ios_wchar basic_ios;
234 } basic_ostringstream_wchar;
236 typedef struct {
237 basic_istream_char base;
238 basic_stringbuf_char strbuf;
239 /* virtual inheritance
240 * basic_ios_char basic_ios;
242 } basic_istringstream_char;
244 typedef struct {
245 basic_istream_wchar base;
246 basic_stringbuf_wchar strbuf;
247 /* virtual inheritance
248 * basic_ios_wchar basic_ios;
250 } basic_istringstream_wchar;
252 typedef struct {
253 basic_iostream_char base;
254 basic_stringbuf_char strbuf;
255 /* virtual inheritance
256 * basic_ios_char basic_ios;
258 } basic_stringstream_char;
260 typedef struct {
261 basic_iostream_wchar base;
262 basic_stringbuf_wchar strbuf;
263 /* virtual inheritance
264 * basic_ios_wchar basic_ios;
266 } basic_stringstream_wchar;
268 typedef enum {
269 STRSTATE_Allocated = 1,
270 STRSTATE_Constant = 2,
271 STRSTATE_Dynamic = 4,
272 STRSTATE_Frozen = 8
273 } strstreambuf__Strstate;
275 typedef struct {
276 basic_streambuf_char base;
277 char *endsave;
278 char *seekhigh;
279 streamsize minsize;
280 int strmode;
281 void* (__cdecl *palloc)(size_t);
282 void (__cdecl *pfree)(void*);
283 } strstreambuf;
285 typedef struct {
286 basic_ostream_char base;
287 strstreambuf buf;
288 /* virtual inheritance
289 * basic_ios_char basic_ios;
291 } ostrstream;
293 typedef struct {
294 basic_istream_char base;
295 strstreambuf buf;
296 /* virtual inheritance
297 * basic_ios_char basic_ios;
299 } istrstream;
301 typedef struct {
302 basic_iostream_char base;
303 strstreambuf buf;
304 /* virtual inheritance
305 * basic_ios_char basic_ios;
307 } strstream;
309 #define VBTABLE_ALIGN 4
311 extern const vtable_ptr iosb_vtable;
313 /* ??_7ios_base@std@@6B@ */
314 extern const vtable_ptr ios_base_vtable;
316 /* ??_7?$basic_ios@DU?$char_traits@D@std@@@std@@6B@ */
317 extern const vtable_ptr basic_ios_char_vtable;
319 /* ??_7?$basic_ios@_WU?$char_traits@_W@std@@@std@@6B@ */
320 extern const vtable_ptr basic_ios_wchar_vtable;
322 /* ??_7?$basic_ios@GU?$char_traits@G@std@@@std@@6B@ */
323 extern const vtable_ptr basic_ios_short_vtable;
325 /* ??_7?$basic_streambuf@DU?$char_traits@D@std@@@std@@6B@ */
326 extern const vtable_ptr basic_streambuf_char_vtable;
328 /* ??_7?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@6B@ */
329 extern const vtable_ptr basic_streambuf_wchar_vtable;
331 /* ??_7?$basic_streambuf@GU?$char_traits@G@std@@@std@@6B@ */
332 extern const vtable_ptr basic_streambuf_short_vtable;
334 /* ??_7?$basic_filebuf@DU?$char_traits@D@std@@@std@@6B@ */
335 extern const vtable_ptr basic_filebuf_char_vtable;
337 /* ??_7?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@6B@ */
338 extern const vtable_ptr basic_filebuf_wchar_vtable;
340 /* ??_7?$basic_filebuf@GU?$char_traits@G@std@@@std@@6B@ */
341 extern const vtable_ptr basic_filebuf_short_vtable;
343 /* ??_7?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
344 extern const vtable_ptr basic_stringbuf_char_vtable;
346 /* ??_7?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
347 extern const vtable_ptr basic_stringbuf_short_vtable;
349 /* ??_8?$basic_ostream@DU?$char_traits@D@std@@@std@@7B@ */
350 const int basic_ostream_char_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ostream_char), VBTABLE_ALIGN)};
351 /* ??_7?$basic_ostream@DU?$char_traits@D@std@@@std@@6B@ */
352 extern const vtable_ptr basic_ostream_char_vtable;
354 /* ??_8?$basic_ostream@GU?$char_traits@G@std@@@std@@7B@ */
355 const int basic_ostream_short_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ostream_wchar), VBTABLE_ALIGN)};
356 /* ??_7?$basic_ostream@GU?$char_traits@G@std@@@std@@6B@ */
357 extern const vtable_ptr basic_ostream_short_vtable;
359 /* ??_8?$basic_istream@DU?$char_traits@D@std@@@std@@7B@ */
360 const int basic_istream_char_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_istream_char), VBTABLE_ALIGN)};
361 /* ??_7?$basic_istream@DU?$char_traits@D@std@@@std@@6B@ */
362 extern const vtable_ptr basic_istream_char_vtable;
364 /* ??_8?$basic_istream@GU?$char_traits@G@std@@@std@@7B@ */
365 const int basic_istream_short_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_istream_wchar), VBTABLE_ALIGN)};
366 /* ??_7?$basic_istream@GU?$char_traits@G@std@@@std@@6B@ */
367 extern const vtable_ptr basic_istream_short_vtable;
369 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
370 const int basic_iostream_char_vbtable1[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_char), VBTABLE_ALIGN)};
371 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
372 const int basic_iostream_char_vbtable2[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_char), VBTABLE_ALIGN)-FIELD_OFFSET(basic_iostream_char, base2)};
373 /* ??_7?$basic_iostream@DU?$char_traits@D@std@@@std@@6B@ */
374 extern const vtable_ptr basic_iostream_char_vtable;
376 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
377 const int basic_iostream_short_vbtable1[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_wchar), VBTABLE_ALIGN)};
378 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
379 const int basic_iostream_short_vbtable2[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_wchar), VBTABLE_ALIGN)-FIELD_OFFSET(basic_iostream_wchar, base2)};
380 /* ??_7?$basic_iostream@GU?$char_traits@G@std@@@std@@6B@ */
381 extern const vtable_ptr basic_iostream_short_vtable;
383 /* ??_8?$basic_ofstream@DU?$char_traits@D@std@@@std@@7B@ */
384 const int basic_ofstream_char_vbtable[] = {0, sizeof(basic_ofstream_char)};
385 /* ??_7?$basic_ofstream@DU?$char_traits@D@std@@@std@@6B@ */
386 extern const vtable_ptr basic_ofstream_char_vtable;
388 /* ??_8?$basic_ofstream@GU?$char_traits@G@std@@@std@@7B@ */
389 const int basic_ofstream_short_vbtable[] = {0, sizeof(basic_ofstream_wchar)};
390 /* ??_7?$basic_ofstream@GU?$char_traits@G@std@@@std@@6B@ */
391 extern const vtable_ptr basic_ofstream_short_vtable;
393 /* ??_8?$basic_ifstream@DU?$char_traits@D@std@@@std@@7B@ */
394 const int basic_ifstream_char_vbtable[] = {0, sizeof(basic_ifstream_char)};
395 /* ??_7?$basic_ifstream@DU?$char_traits@D@std@@@std@@6B@ */
396 extern const vtable_ptr basic_ifstream_char_vtable;
398 /* ??_8?$basic_ifstream@GU?$char_traits@G@std@@@std@@7B@ */
399 const int basic_ifstream_short_vbtable[] = {0, sizeof(basic_ifstream_wchar)};
400 /* ??_7?$basic_ifstream@GU?$char_traits@G@std@@@std@@6B@ */
401 extern const vtable_ptr basic_ifstream_short_vtable;
403 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
404 const int basic_fstream_char_vbtable1[] = {0, sizeof(basic_fstream_char)};
405 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
406 const int basic_fstream_char_vbtable2[] = {0, sizeof(basic_fstream_char)-FIELD_OFFSET(basic_fstream_char, base.base2)};
407 /* ??_7?$basic_fstream@DU?$char_traits@D@std@@@std@@6B@ */
408 extern const vtable_ptr basic_fstream_char_vtable;
410 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
411 const int basic_fstream_short_vbtable1[] = {0, sizeof(basic_fstream_wchar)};
412 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
413 const int basic_fstream_short_vbtable2[] = {0, sizeof(basic_fstream_wchar)-FIELD_OFFSET(basic_fstream_wchar, base.base2)};
414 /* ??_7?$basic_fstream@GU?$char_traits@G@std@@@std@@6B@ */
415 extern const vtable_ptr basic_fstream_short_vtable;
417 /* ??_8?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
418 const int basic_ostringstream_char_vbtable[] = {0, sizeof(basic_ostringstream_char)};
419 /* ??_7?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
420 extern const vtable_ptr basic_ostringstream_char_vtable;
422 /* ??_8?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
423 const int basic_ostringstream_short_vbtable[] = {0, sizeof(basic_ostringstream_wchar)};
424 /* ??_7?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
425 extern const vtable_ptr basic_ostringstream_short_vtable;
427 /* ??_8?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
428 const int basic_istringstream_char_vbtable[] = {0, sizeof(basic_istringstream_char)};
429 /* ??_7?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
430 extern const vtable_ptr basic_istringstream_char_vtable;
432 /* ??_8?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
433 const int basic_istringstream_short_vbtable[] = {0, sizeof(basic_istringstream_wchar)};
434 /* ??_7?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
435 extern const vtable_ptr basic_istringstream_short_vtable;
437 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
438 const int basic_stringstream_char_vbtable1[] = {0, sizeof(basic_stringstream_char)};
439 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
440 const int basic_stringstream_char_vbtable2[] = {0, sizeof(basic_stringstream_char)-FIELD_OFFSET(basic_stringstream_char, base.base2)};
441 /* ??_7?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
442 extern const vtable_ptr basic_stringstream_char_vtable;
444 /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
445 const int basic_stringstream_short_vbtable1[] = {0, sizeof(basic_stringstream_wchar)};
446 /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
447 const int basic_stringstream_short_vbtable2[] = {0, sizeof(basic_stringstream_wchar)-FIELD_OFFSET(basic_stringstream_wchar, base.base2)};
448 /* ??_7?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
449 extern const vtable_ptr basic_stringstream_short_vtable;
451 /* ??_7strstreambuf@std@@6B */
452 extern const vtable_ptr strstreambuf_vtable;
454 static const int ostrstream_vbtable[] = {0, sizeof(ostrstream)};
455 extern const vtable_ptr ostrstream_vtable;
457 static const int istrstream_vbtable[] = {0, sizeof(istrstream)};
459 static const int strstream_vbtable1[] = {0, sizeof(strstream)};
460 static const int strstream_vbtable2[] = {0, sizeof(strstream)-FIELD_OFFSET(strstream, base.base2)};
461 extern const vtable_ptr strstream_vtable;
463 DEFINE_RTTI_DATA0(iosb, 0, ".?AV?$_Iosb@H@std@@")
464 DEFINE_RTTI_DATA1(ios_base, 0, &iosb_rtti_base_descriptor, ".?AV?$_Iosb@H@std@@")
465 DEFINE_RTTI_DATA2(basic_ios_char, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
466 ".?AV?$basic_ios@DU?$char_traits@D@std@@@std@@")
467 DEFINE_RTTI_DATA2(basic_ios_wchar, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
468 ".?AV?$basic_ios@_WU?$char_traits@_W@std@@@std@@")
469 DEFINE_RTTI_DATA2(basic_ios_short, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
470 ".?AV?$basic_ios@GU?$char_traits@G@std@@@std@@")
471 DEFINE_RTTI_DATA0(basic_streambuf_char, 0,
472 ".?AV?$basic_streambuf@DU?$char_traits@D@std@@@std@@")
473 DEFINE_RTTI_DATA0(basic_streambuf_wchar, 0,
474 ".?AV?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@")
475 DEFINE_RTTI_DATA0(basic_streambuf_short, 0,
476 ".?AV?$basic_streambuf@GU?$char_traits@G@std@@@std@@")
477 DEFINE_RTTI_DATA1(basic_filebuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
478 ".?AV?$basic_filebuf@DU?$char_traits@D@std@@@std@@")
479 DEFINE_RTTI_DATA1(basic_filebuf_wchar, 0, &basic_streambuf_wchar_rtti_base_descriptor,
480 ".?AV?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@")
481 DEFINE_RTTI_DATA1(basic_filebuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
482 ".?AV?$basic_filebuf@GU?$char_traits@G@std@@@std@@")
483 DEFINE_RTTI_DATA1(basic_stringbuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
484 ".?AV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
485 DEFINE_RTTI_DATA1(basic_stringbuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
486 ".?AV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
487 DEFINE_RTTI_DATA3(basic_ostream_char, sizeof(basic_ostream_char), &basic_ios_char_rtti_base_descriptor,
488 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
489 ".?AV?$basic_ostream@DU?$char_traits@D@std@@@std@@")
490 DEFINE_RTTI_DATA3(basic_ostream_short, sizeof(basic_ostream_wchar), &basic_ios_short_rtti_base_descriptor,
491 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
492 ".?AV?$basic_ostream@GU?$char_traits@G@std@@@std@@")
493 DEFINE_RTTI_DATA3(basic_istream_char, sizeof(basic_istream_char), &basic_ios_char_rtti_base_descriptor,
494 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
495 ".?AV?$basic_istream@DU?$char_traits@D@std@@@std@@")
496 DEFINE_RTTI_DATA3(basic_istream_short, sizeof(basic_istream_wchar), &basic_ios_short_rtti_base_descriptor,
497 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
498 ".?AV?$basic_istream@GU?$char_traits@G@std@@@std@@")
499 DEFINE_RTTI_DATA8(basic_iostream_char, sizeof(basic_iostream_char),
500 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
501 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
502 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
503 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
504 ".?AV?$basic_iostream@DU?$char_traits@D@std@@@std@@")
505 DEFINE_RTTI_DATA8(basic_iostream_short, sizeof(basic_iostream_wchar),
506 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
507 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
508 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
509 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
510 ".?AV?$basic_iostream@GU?$char_traits@G@std@@@std@@")
511 DEFINE_RTTI_DATA4(basic_ofstream_char, sizeof(basic_ofstream_char),
512 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
513 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
514 ".?AV?$basic_ofstream@DU?$char_traits@D@std@@@std@@")
515 DEFINE_RTTI_DATA4(basic_ofstream_short, sizeof(basic_ofstream_wchar),
516 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
517 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
518 ".?AV?$basic_ofstream@GU?$char_traits@G@std@@@std@@")
519 DEFINE_RTTI_DATA4(basic_ifstream_char, sizeof(basic_ifstream_char),
520 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
521 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
522 ".?AV?$basic_ifstream@DU?$char_traits@D@std@@@std@@")
523 DEFINE_RTTI_DATA4(basic_ifstream_short, sizeof(basic_ifstream_wchar),
524 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
525 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
526 ".?AV?$basic_ifstream@GU?$char_traits@G@std@@@std@@")
527 DEFINE_RTTI_DATA8(basic_fstream_char, sizeof(basic_fstream_char),
528 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
529 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
530 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
531 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
532 ".?AV?$basic_fstream@DU?$char_traits@D@std@@@std@@")
533 DEFINE_RTTI_DATA8(basic_fstream_short, sizeof(basic_fstream_wchar),
534 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
535 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
536 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
537 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
538 ".?AV?$basic_fstream@GU?$char_traits@G@std@@@std@@")
539 DEFINE_RTTI_DATA4(basic_ostringstream_char, sizeof(basic_ostringstream_char),
540 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
541 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
542 ".?AV?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
543 DEFINE_RTTI_DATA4(basic_ostringstream_short, sizeof(basic_ostringstream_wchar),
544 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
545 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
546 ".?AV?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
547 DEFINE_RTTI_DATA4(basic_istringstream_char, sizeof(basic_istringstream_char),
548 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
549 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
550 ".?AV?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
551 DEFINE_RTTI_DATA4(basic_istringstream_short, sizeof(basic_istringstream_wchar),
552 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
553 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
554 ".?AV?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
555 DEFINE_RTTI_DATA8(basic_stringstream_char, sizeof(basic_stringstream_char),
556 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
557 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
558 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
559 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
560 ".?AV?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
561 DEFINE_RTTI_DATA8(basic_stringstream_short, sizeof(basic_stringstream_wchar),
562 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
563 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
564 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
565 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
566 ".?AV?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
567 DEFINE_RTTI_DATA1(strstreambuf, sizeof(strstreambuf),
568 &basic_streambuf_char_rtti_base_descriptor, ".?AVstrstreambuf@std@@")
569 DEFINE_RTTI_DATA4(ostrstream, sizeof(ostrstream),
570 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
571 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
572 "?AVostrstream@std@@")
573 DEFINE_RTTI_DATA8(strstream, sizeof(strstream),
574 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
575 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
576 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
577 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
578 "?AVstrstream@std@@")
580 __ASM_BLOCK_BEGIN(ios_vtables)
581 __ASM_VTABLE(iosb,
582 VTABLE_ADD_FUNC(iosb_vector_dtor));
583 __ASM_VTABLE(ios_base,
584 VTABLE_ADD_FUNC(ios_base_vector_dtor));
585 __ASM_VTABLE(basic_ios_char,
586 VTABLE_ADD_FUNC(basic_ios_char_vector_dtor));
587 __ASM_VTABLE(basic_ios_wchar,
588 VTABLE_ADD_FUNC(basic_ios_wchar_vector_dtor));
589 __ASM_VTABLE(basic_ios_short,
590 VTABLE_ADD_FUNC(basic_ios_wchar_vector_dtor));
591 __ASM_VTABLE(basic_streambuf_char,
592 VTABLE_ADD_FUNC(basic_streambuf_char_vector_dtor)
593 VTABLE_ADD_FUNC(basic_streambuf_char_overflow)
594 VTABLE_ADD_FUNC(basic_streambuf_char_pbackfail)
595 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
596 VTABLE_ADD_FUNC(basic_streambuf_char_underflow)
597 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
598 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
599 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
600 VTABLE_ADD_FUNC(basic_streambuf_char_seekoff)
601 VTABLE_ADD_FUNC(basic_streambuf_char_seekpos)
602 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
603 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
604 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
605 __ASM_VTABLE(basic_streambuf_wchar,
606 VTABLE_ADD_FUNC(basic_streambuf_wchar_vector_dtor)
607 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
608 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
609 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
610 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
611 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
612 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
613 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
614 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
615 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
616 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
617 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
618 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
619 __ASM_VTABLE(basic_streambuf_short,
620 VTABLE_ADD_FUNC(basic_streambuf_wchar_vector_dtor)
621 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
622 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
623 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
624 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
625 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
626 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
627 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
628 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
629 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
630 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
631 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
632 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
633 __ASM_VTABLE(basic_filebuf_char,
634 VTABLE_ADD_FUNC(basic_filebuf_char_vector_dtor)
635 VTABLE_ADD_FUNC(basic_filebuf_char_overflow)
636 VTABLE_ADD_FUNC(basic_filebuf_char_pbackfail)
637 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
638 VTABLE_ADD_FUNC(basic_filebuf_char_underflow)
639 VTABLE_ADD_FUNC(basic_filebuf_char_uflow)
640 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
641 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
642 VTABLE_ADD_FUNC(basic_filebuf_char_seekoff)
643 VTABLE_ADD_FUNC(basic_filebuf_char_seekpos)
644 VTABLE_ADD_FUNC(basic_filebuf_char_setbuf)
645 VTABLE_ADD_FUNC(basic_filebuf_char_sync)
646 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
647 __ASM_VTABLE(basic_filebuf_wchar,
648 VTABLE_ADD_FUNC(basic_filebuf_wchar_vector_dtor)
649 VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow)
650 VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail)
651 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
652 VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow)
653 VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow)
654 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
655 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
656 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff)
657 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos)
658 VTABLE_ADD_FUNC(basic_filebuf_wchar_setbuf)
659 VTABLE_ADD_FUNC(basic_filebuf_wchar_sync)
660 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
661 __ASM_VTABLE(basic_filebuf_short,
662 VTABLE_ADD_FUNC(basic_filebuf_wchar_vector_dtor)
663 VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow)
664 VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail)
665 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
666 VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow)
667 VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow)
668 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
669 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
670 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff)
671 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos)
672 VTABLE_ADD_FUNC(basic_filebuf_short_setbuf)
673 VTABLE_ADD_FUNC(basic_filebuf_wchar_sync)
674 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
675 __ASM_VTABLE(basic_stringbuf_char,
676 VTABLE_ADD_FUNC(basic_stringbuf_char_vector_dtor)
677 VTABLE_ADD_FUNC(basic_stringbuf_char_overflow)
678 VTABLE_ADD_FUNC(basic_stringbuf_char_pbackfail)
679 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
680 VTABLE_ADD_FUNC(basic_stringbuf_char_underflow)
681 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
682 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
683 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
684 VTABLE_ADD_FUNC(basic_stringbuf_char_seekoff)
685 VTABLE_ADD_FUNC(basic_stringbuf_char_seekpos)
686 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
687 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
688 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
689 __ASM_VTABLE(basic_stringbuf_short,
690 VTABLE_ADD_FUNC(basic_stringbuf_short_vector_dtor)
691 VTABLE_ADD_FUNC(basic_stringbuf_short_overflow)
692 VTABLE_ADD_FUNC(basic_stringbuf_short_pbackfail)
693 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
694 VTABLE_ADD_FUNC(basic_stringbuf_short_underflow)
695 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
696 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
697 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
698 VTABLE_ADD_FUNC(basic_stringbuf_short_seekoff)
699 VTABLE_ADD_FUNC(basic_stringbuf_short_seekpos)
700 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
701 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
702 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
703 __ASM_VTABLE(basic_ostream_char,
704 VTABLE_ADD_FUNC(basic_ostream_char_vector_dtor));
705 __ASM_VTABLE(basic_ostream_short,
706 VTABLE_ADD_FUNC(basic_ostream_short_vector_dtor));
707 __ASM_VTABLE(basic_istream_char,
708 VTABLE_ADD_FUNC(basic_istream_char_vector_dtor));
709 __ASM_VTABLE(basic_istream_short,
710 VTABLE_ADD_FUNC(basic_istream_short_vector_dtor));
711 __ASM_VTABLE(basic_iostream_char,
712 VTABLE_ADD_FUNC(basic_iostream_char_vector_dtor));
713 __ASM_VTABLE(basic_iostream_short,
714 VTABLE_ADD_FUNC(basic_iostream_short_vector_dtor));
715 __ASM_VTABLE(basic_ofstream_char,
716 VTABLE_ADD_FUNC(basic_ofstream_char_vector_dtor));
717 __ASM_VTABLE(basic_ofstream_short,
718 VTABLE_ADD_FUNC(basic_ofstream_short_vector_dtor));
719 __ASM_VTABLE(basic_ifstream_char,
720 VTABLE_ADD_FUNC(basic_ifstream_char_vector_dtor));
721 __ASM_VTABLE(basic_ifstream_short,
722 VTABLE_ADD_FUNC(basic_ifstream_short_vector_dtor));
723 __ASM_VTABLE(basic_fstream_char,
724 VTABLE_ADD_FUNC(basic_fstream_char_vector_dtor));
725 __ASM_VTABLE(basic_fstream_short,
726 VTABLE_ADD_FUNC(basic_fstream_short_vector_dtor));
727 __ASM_VTABLE(basic_ostringstream_char,
728 VTABLE_ADD_FUNC(basic_ostringstream_char_vector_dtor));
729 __ASM_VTABLE(basic_ostringstream_short,
730 VTABLE_ADD_FUNC(basic_ostringstream_short_vector_dtor));
731 __ASM_VTABLE(basic_istringstream_char,
732 VTABLE_ADD_FUNC(basic_istringstream_char_vector_dtor));
733 __ASM_VTABLE(basic_istringstream_short,
734 VTABLE_ADD_FUNC(basic_istringstream_short_vector_dtor));
735 __ASM_VTABLE(basic_stringstream_char,
736 VTABLE_ADD_FUNC(basic_stringstream_char_vector_dtor));
737 __ASM_VTABLE(basic_stringstream_short,
738 VTABLE_ADD_FUNC(basic_stringstream_short_vector_dtor));
739 __ASM_VTABLE(strstreambuf,
740 VTABLE_ADD_FUNC(strstreambuf_vector_dtor)
741 VTABLE_ADD_FUNC(strstreambuf_overflow)
742 VTABLE_ADD_FUNC(strstreambuf_pbackfail)
743 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
744 VTABLE_ADD_FUNC(strstreambuf_underflow)
745 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
746 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
747 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
748 VTABLE_ADD_FUNC(strstreambuf_seekoff)
749 VTABLE_ADD_FUNC(strstreambuf_seekpos)
750 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
751 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
752 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
753 __ASM_VTABLE(ostrstream,
754 VTABLE_ADD_FUNC(ostrstream_vector_dtor));
755 __ASM_VTABLE(strstream,
756 VTABLE_ADD_FUNC(strstream_vector_dtor));
757 __ASM_BLOCK_END
759 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
760 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
761 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp_next, 16)
762 void __thiscall basic_streambuf_char_setp_next(basic_streambuf_char *this, char *first, char *next, char *last)
764 TRACE("(%p %p %p %p)\n", this, first, next, last);
766 this->wbuf = first;
767 this->wpos = next;
768 this->wsize = last-next;
771 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD0@Z */
772 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD0@Z */
773 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp, 12)
774 void __thiscall basic_streambuf_char_setp(basic_streambuf_char *this, char *first, char *last)
776 basic_streambuf_char_setp_next(this, first, first, last);
779 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
780 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
781 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setg, 16)
782 void __thiscall basic_streambuf_char_setg(basic_streambuf_char *this, char *first, char *next, char *last)
784 TRACE("(%p %p %p %p)\n", this, first, next, last);
786 this->rbuf = first;
787 this->rpos = next;
788 this->rsize = last-next;
791 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXXZ */
792 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */
793 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init_empty, 4)
794 void __thiscall basic_streambuf_char__Init_empty(basic_streambuf_char *this)
796 TRACE("(%p)\n", this);
798 this->prbuf = &this->rbuf;
799 this->pwbuf = &this->wbuf;
800 this->prpos = &this->rpos;
801 this->pwpos = &this->wpos;
802 this->prsize = &this->rsize;
803 this->pwsize = &this->wsize;
805 basic_streambuf_char_setp(this, NULL, NULL);
806 basic_streambuf_char_setg(this, NULL, NULL, NULL);
809 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@W4_Uninitialized@1@@Z */
810 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
811 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor_uninitialized, 8)
812 basic_streambuf_char* __thiscall basic_streambuf_char_ctor_uninitialized(basic_streambuf_char *this, int uninitialized)
814 TRACE("(%p %d)\n", this, uninitialized);
815 this->vtable = &basic_streambuf_char_vtable;
816 return this;
819 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ */
820 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ */
821 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor, 4)
822 basic_streambuf_char* __thiscall basic_streambuf_char_ctor(basic_streambuf_char *this)
824 TRACE("(%p)\n", this);
826 this->vtable = &basic_streambuf_char_vtable;
827 locale_ctor(IOS_LOCALE(this));
828 basic_streambuf_char__Init_empty(this);
830 return this;
833 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
834 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
835 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_dtor, 4)
836 void __thiscall basic_streambuf_char_dtor(basic_streambuf_char *this)
838 TRACE("(%p)\n", this);
839 locale_dtor(IOS_LOCALE(this));
842 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_vector_dtor, 8)
843 basic_streambuf_char* __thiscall basic_streambuf_char_vector_dtor(basic_streambuf_char *this, unsigned int flags)
845 TRACE("(%p %x)\n", this, flags);
846 if(flags & 2) {
847 /* we have an array, with the number of elements stored before the first object */
848 INT_PTR i, *ptr = (INT_PTR *)this-1;
850 for(i=*ptr-1; i>=0; i--)
851 basic_streambuf_char_dtor(this+i);
852 operator_delete(ptr);
853 } else {
854 basic_streambuf_char_dtor(this);
855 if(flags & 1)
856 operator_delete(this);
859 return this;
862 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
863 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
864 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnavail, 4)
865 streamsize __thiscall basic_streambuf_char__Gnavail(const basic_streambuf_char *this)
867 TRACE("(%p)\n", this);
868 return *this->prpos ? *this->prsize : 0;
871 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
872 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
873 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gndec, 4)
874 char* __thiscall basic_streambuf_char__Gndec(basic_streambuf_char *this)
876 TRACE("(%p)\n", this);
877 (*this->prsize)++;
878 (*this->prpos)--;
879 return *this->prpos;
882 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
883 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
884 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gninc, 4)
885 char* __thiscall basic_streambuf_char__Gninc(basic_streambuf_char *this)
887 TRACE("(%p)\n", this);
888 (*this->prsize)--;
889 return (*this->prpos)++;
892 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
893 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
894 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnpreinc, 4)
895 char* __thiscall basic_streambuf_char__Gnpreinc(basic_streambuf_char *this)
897 TRACE("(%p)\n", this);
898 (*this->prsize)--;
899 (*this->prpos)++;
900 return *this->prpos;
903 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAPAD0PAH001@Z */
904 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAPEAD0PEAH001@Z */
905 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init, 28)
906 void __thiscall basic_streambuf_char__Init(basic_streambuf_char *this, char **gf, char **gn, int *gc, char **pf, char **pn, int *pc)
908 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
910 this->prbuf = gf;
911 this->pwbuf = pf;
912 this->prpos = gn;
913 this->pwpos = pn;
914 this->prsize = gc;
915 this->pwsize = pc;
918 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
919 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
920 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Lock, 4)
921 #define call_basic_streambuf_char__Lock(this) basic_streambuf_char__Lock(this)
922 void __thiscall basic_streambuf_char__Lock(basic_streambuf_char *this)
924 TRACE("(%p)\n", this);
927 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
928 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
929 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pnavail, 4)
930 streamsize __thiscall basic_streambuf_char__Pnavail(const basic_streambuf_char *this)
932 TRACE("(%p)\n", this);
933 return *this->pwpos ? *this->pwsize : 0;
936 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
937 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
938 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pninc, 4)
939 char* __thiscall basic_streambuf_char__Pninc(basic_streambuf_char *this)
941 TRACE("(%p)\n", this);
942 (*this->pwsize)--;
943 return (*this->pwpos)++;
946 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
947 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
948 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_underflow, 4)
949 #define call_basic_streambuf_char_underflow(this) CALL_VTBL_FUNC(this, 16, int, (basic_streambuf_char*), (this))
950 int __thiscall basic_streambuf_char_underflow(basic_streambuf_char *this)
952 TRACE("(%p)\n", this);
953 return EOF;
956 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
957 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
958 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_uflow, 4)
959 #define call_basic_streambuf_char_uflow(this) CALL_VTBL_FUNC(this, 20, int, (basic_streambuf_char*), (this))
960 int __thiscall basic_streambuf_char_uflow(basic_streambuf_char *this)
962 int ret;
964 TRACE("(%p)\n", this);
966 if(call_basic_streambuf_char_underflow(this)==EOF)
967 return EOF;
969 ret = (unsigned char)**this->prpos;
970 (*this->prsize)--;
971 (*this->prpos)++;
972 return ret;
975 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADIH@Z */
976 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_K_J@Z */
977 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Xsgetn_s, 16)
978 #define call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count) basic_streambuf_char__Xsgetn_s(this, ptr, size, count)
979 streamsize __thiscall basic_streambuf_char__Xsgetn_s(basic_streambuf_char *this, char *ptr, size_t size, streamsize count)
981 streamsize copied, chunk;
982 int c;
984 TRACE("(%p %p %Iu %Id)\n", this, ptr, size, count);
986 for(copied=0; copied<count && size;) {
987 chunk = basic_streambuf_char__Gnavail(this);
988 if(chunk > count-copied)
989 chunk = count-copied;
991 if(chunk > 0) {
992 memcpy_s(ptr+copied, size, *this->prpos, chunk);
993 *this->prpos += chunk;
994 *this->prsize -= chunk;
995 copied += chunk;
996 size -= chunk;
997 }else if((c = call_basic_streambuf_char_uflow(this)) != EOF) {
998 ptr[copied] = c;
999 copied++;
1000 size--;
1001 }else {
1002 break;
1006 return copied;
1009 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
1010 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
1011 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Sgetn_s, 16)
1012 streamsize __thiscall basic_streambuf_char__Sgetn_s(basic_streambuf_char *this, char *ptr, size_t size, streamsize count)
1014 TRACE("(%p %p %Iu %Id)\n", this, ptr, size, count);
1015 return call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count);
1018 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1019 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1020 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Unlock, 4)
1021 #define call_basic_streambuf_char__Unlock(this) basic_streambuf_char__Unlock(this)
1022 void __thiscall basic_streambuf_char__Unlock(basic_streambuf_char *this)
1024 TRACE("(%p)\n", this);
1027 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1028 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1029 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_eback, 4)
1030 char* __thiscall basic_streambuf_char_eback(const basic_streambuf_char *this)
1032 TRACE("(%p)\n", this);
1033 return *this->prbuf;
1036 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1037 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1038 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gptr, 4)
1039 char* __thiscall basic_streambuf_char_gptr(const basic_streambuf_char *this)
1041 TRACE("(%p)\n", this);
1042 return *this->prpos;
1045 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1046 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1047 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_egptr, 4)
1048 char* __thiscall basic_streambuf_char_egptr(const basic_streambuf_char *this)
1050 TRACE("(%p)\n", this);
1051 return *this->prpos+*this->prsize;
1054 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1055 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1056 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_epptr, 4)
1057 char* __thiscall basic_streambuf_char_epptr(const basic_streambuf_char *this)
1059 TRACE("(%p)\n", this);
1060 return *this->pwpos+*this->pwsize;
1063 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1064 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1065 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gbump, 8)
1066 void __thiscall basic_streambuf_char_gbump(basic_streambuf_char *this, int off)
1068 TRACE("(%p %d)\n", this, off);
1069 *this->prpos += off;
1070 *this->prsize -= off;
1073 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@XZ */
1074 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ */
1075 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@XZ */
1076 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ */
1077 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_getloc, 8)
1078 locale* __thiscall basic_streambuf_char_getloc(const basic_streambuf_char *this, locale *ret)
1080 TRACE("(%p)\n", this);
1081 return locale_copy_ctor(ret, IOS_LOCALE(this));
1084 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
1085 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
1086 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_imbue, 8)
1087 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 48, void, (basic_streambuf_char*, const locale*), (this, loc))
1088 void __thiscall basic_streambuf_char_imbue(basic_streambuf_char *this, const locale *loc)
1090 TRACE("(%p %p)\n", this, loc);
1093 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1094 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1095 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_overflow, 8)
1096 #define call_basic_streambuf_char_overflow(this, ch) CALL_VTBL_FUNC(this, 4, int, (basic_streambuf_char*, int), (this, ch))
1097 int __thiscall basic_streambuf_char_overflow(basic_streambuf_char *this, int ch)
1099 TRACE("(%p %d)\n", this, ch);
1100 return EOF;
1103 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1104 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1105 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbackfail, 8)
1106 #define call_basic_streambuf_char_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, int, (basic_streambuf_char*, int), (this, ch))
1107 int __thiscall basic_streambuf_char_pbackfail(basic_streambuf_char *this, int ch)
1109 TRACE("(%p %d)\n", this, ch);
1110 return EOF;
1113 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1114 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1115 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbase, 4)
1116 char* __thiscall basic_streambuf_char_pbase(const basic_streambuf_char *this)
1118 TRACE("(%p)\n", this);
1119 return *this->pwbuf;
1122 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1123 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1124 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbump, 8)
1125 void __thiscall basic_streambuf_char_pbump(basic_streambuf_char *this, int off)
1127 TRACE("(%p %d)\n", this, off);
1128 *this->pwpos += off;
1129 *this->pwsize -= off;
1132 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1133 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1134 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pptr, 4)
1135 char* __thiscall basic_streambuf_char_pptr(const basic_streambuf_char *this)
1137 TRACE("(%p)\n", this);
1138 return *this->pwpos;
1141 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1142 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1143 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubimbue, 12)
1144 locale* __thiscall basic_streambuf_char_pubimbue(basic_streambuf_char *this, locale *ret, const locale *loc)
1146 TRACE("(%p %p)\n", this, loc);
1147 memcpy(ret, IOS_LOCALE(this), sizeof(locale));
1148 call_basic_streambuf_char_imbue(this, loc);
1149 locale_copy_ctor(IOS_LOCALE(this), loc);
1150 return ret;
1153 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
1154 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
1155 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1156 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1157 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 20)
1158 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 32, fpos_int*, (basic_streambuf_char*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
1159 fpos_int* __thiscall basic_streambuf_char_seekoff(basic_streambuf_char *this,
1160 fpos_int *ret, streamoff off, int way, int mode)
1162 TRACE("(%p %Id %d %d)\n", this, off, way, mode);
1163 ret->off = -1;
1164 ret->pos = 0;
1165 ret->state = 0;
1166 return ret;
1169 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1170 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1171 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JFF@Z */
1172 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JFF@Z */
1173 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
1174 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
1175 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 20)
1176 fpos_int* __thiscall basic_streambuf_char_pubseekoff(basic_streambuf_char *this,
1177 fpos_int *ret, streamoff off, int way, int mode)
1179 TRACE("(%p %Id %d %d)\n", this, off, way, mode);
1180 return call_basic_streambuf_char_seekoff(this, ret, off, way, mode);
1183 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
1184 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
1185 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 20)
1186 fpos_int* __thiscall basic_streambuf_char_pubseekoff_old(basic_streambuf_char *this,
1187 fpos_int *ret, streamoff off, unsigned int way, unsigned int mode)
1189 TRACE("(%p %Id %d %d)\n", this, off, way, mode);
1190 return basic_streambuf_char_pubseekoff(this, ret, off, way, mode);
1193 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1194 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1195 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekpos, 36)
1196 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 36, fpos_int*, (basic_streambuf_char*, fpos_int*, fpos_int, int), (this, ret, pos, mode))
1197 fpos_int* __thiscall basic_streambuf_char_seekpos(basic_streambuf_char *this,
1198 fpos_int *ret, fpos_int pos, int mode)
1200 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1201 ret->off = -1;
1202 ret->pos = 0;
1203 ret->state = 0;
1204 return ret;
1207 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1208 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1209 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos, 36)
1210 fpos_int* __thiscall basic_streambuf_char_pubseekpos(basic_streambuf_char *this,
1211 fpos_int *ret, fpos_int pos, int mode)
1213 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1214 return call_basic_streambuf_char_seekpos(this, ret, pos, mode);
1217 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
1218 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
1219 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos_old, 36)
1220 fpos_int* __thiscall basic_streambuf_char_pubseekpos_old(basic_streambuf_char *this,
1221 fpos_int *ret, fpos_int pos, unsigned int mode)
1223 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1224 return basic_streambuf_char_pubseekpos(this, ret, pos, mode);
1227 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PADH@Z */
1228 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z */
1229 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 12)
1230 #define call_basic_streambuf_char_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 40, basic_streambuf_char*, (basic_streambuf_char*, char*, streamsize), (this, buf, count))
1231 basic_streambuf_char* __thiscall basic_streambuf_char_setbuf(basic_streambuf_char *this, char *buf, streamsize count)
1233 TRACE("(%p %p %Id)\n", this, buf, count);
1234 return this;
1237 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PADH@Z */
1238 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEAD_J@Z */
1239 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 12)
1240 basic_streambuf_char* __thiscall basic_streambuf_char_pubsetbuf(basic_streambuf_char *this, char *buf, streamsize count)
1242 TRACE("(%p %p %Id)\n", this, buf, count);
1243 return call_basic_streambuf_char_setbuf(this, buf, count);
1246 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1247 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1248 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sync, 4)
1249 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 44, int, (basic_streambuf_char*), (this))
1250 int __thiscall basic_streambuf_char_sync(basic_streambuf_char *this)
1252 TRACE("(%p)\n", this);
1253 return 0;
1256 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1257 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1258 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsync, 4)
1259 int __thiscall basic_streambuf_char_pubsync(basic_streambuf_char *this)
1261 TRACE("(%p)\n", this);
1262 return call_basic_streambuf_char_sync(this);
1265 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
1266 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
1267 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 12)
1268 streamsize __thiscall basic_streambuf_char_sgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1270 TRACE("(%p %p %Id)\n", this, ptr, count);
1271 return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1274 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1275 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ */
1276 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_showmanyc, 4)
1277 #define call_basic_streambuf_char_showmanyc(this) CALL_VTBL_FUNC(this, 12, streamsize, (basic_streambuf_char*), (this))
1278 streamsize __thiscall basic_streambuf_char_showmanyc(basic_streambuf_char *this)
1280 TRACE("(%p)\n", this);
1281 return 0;
1284 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1285 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JXZ */
1286 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_in_avail, 4)
1287 streamsize __thiscall basic_streambuf_char_in_avail(basic_streambuf_char *this)
1289 streamsize ret;
1291 TRACE("(%p)\n", this);
1293 ret = basic_streambuf_char__Gnavail(this);
1294 return ret ? ret : call_basic_streambuf_char_showmanyc(this);
1297 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1298 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1299 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputbackc, 8)
1300 int __thiscall basic_streambuf_char_sputbackc(basic_streambuf_char *this, char ch)
1302 TRACE("(%p %d)\n", this, ch);
1303 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
1304 (*this->prsize)++;
1305 (*this->prpos)--;
1306 return (unsigned char)ch;
1309 return call_basic_streambuf_char_pbackfail(this, (unsigned char)ch);
1312 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1313 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1314 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputc, 8)
1315 int __thiscall basic_streambuf_char_sputc(basic_streambuf_char *this, char ch)
1317 TRACE("(%p %d)\n", this, ch);
1318 return basic_streambuf_char__Pnavail(this) ?
1319 (unsigned char)(*basic_streambuf_char__Pninc(this) = ch) :
1320 call_basic_streambuf_char_overflow(this, (unsigned char)ch);
1323 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1324 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1325 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sungetc, 4)
1326 int __thiscall basic_streambuf_char_sungetc(basic_streambuf_char *this)
1328 TRACE("(%p)\n", this);
1329 if(*this->prpos && *this->prpos>*this->prbuf) {
1330 (*this->prsize)++;
1331 (*this->prpos)--;
1332 return (unsigned char)**this->prpos;
1335 return call_basic_streambuf_char_pbackfail(this, EOF);
1338 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1339 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1340 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_stossc, 4)
1341 void __thiscall basic_streambuf_char_stossc(basic_streambuf_char *this)
1343 TRACE("(%p)\n", this);
1344 if(basic_streambuf_char__Gnavail(this))
1345 basic_streambuf_char__Gninc(this);
1346 else
1347 call_basic_streambuf_char_uflow(this);
1350 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1351 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1352 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sbumpc, 4)
1353 int __thiscall basic_streambuf_char_sbumpc(basic_streambuf_char *this)
1355 TRACE("(%p)\n", this);
1356 return basic_streambuf_char__Gnavail(this) ?
1357 (int)(unsigned char)*basic_streambuf_char__Gninc(this) : call_basic_streambuf_char_uflow(this);
1360 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1361 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1362 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetc, 4)
1363 int __thiscall basic_streambuf_char_sgetc(basic_streambuf_char *this)
1365 TRACE("(%p)\n", this);
1366 return basic_streambuf_char__Gnavail(this) ?
1367 (int)(unsigned char)*basic_streambuf_char_gptr(this) : call_basic_streambuf_char_underflow(this);
1370 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1371 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1372 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_snextc, 4)
1373 int __thiscall basic_streambuf_char_snextc(basic_streambuf_char *this)
1375 TRACE("(%p)\n", this);
1377 if(basic_streambuf_char__Gnavail(this) > 1)
1378 return (unsigned char)*basic_streambuf_char__Gnpreinc(this);
1379 return basic_streambuf_char_sbumpc(this)==EOF ?
1380 EOF : basic_streambuf_char_sgetc(this);
1383 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADH@Z */
1384 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z */
1385 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 12)
1386 #define call_basic_streambuf_char_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, streamsize, (basic_streambuf_char*, char*, streamsize), (this, ptr, count))
1387 streamsize __thiscall basic_streambuf_char_xsgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1389 TRACE("(%p %p %Id)\n", this, ptr, count);
1390 return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1393 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPBDH@Z */
1394 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z */
1395 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 12)
1396 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 28, streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1397 streamsize __thiscall basic_streambuf_char_xsputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1399 streamsize copied, chunk;
1401 TRACE("(%p %p %Id)\n", this, ptr, count);
1403 for(copied=0; copied<count;) {
1404 chunk = basic_streambuf_char__Pnavail(this);
1405 if(chunk > count-copied)
1406 chunk = count-copied;
1408 if(chunk > 0) {
1409 memcpy(*this->pwpos, ptr+copied, chunk);
1410 *this->pwpos += chunk;
1411 *this->pwsize -= chunk;
1412 copied += chunk;
1413 }else if(call_basic_streambuf_char_overflow(this, (unsigned char)ptr[copied]) != EOF) {
1414 copied++;
1415 }else {
1416 break;
1420 return copied;
1423 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z */
1424 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z */
1425 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 12)
1426 streamsize __thiscall basic_streambuf_char_sputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1428 TRACE("(%p %p %Id)\n", this, ptr, count);
1429 return call_basic_streambuf_char_xsputn(this, ptr, count);
1432 /* ?swap@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXAAV12@@Z */
1433 /* ?swap@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXAEAV12@@Z */
1434 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_swap, 8)
1435 void __thiscall basic_streambuf_char_swap(basic_streambuf_char *this, basic_streambuf_char *r)
1437 basic_streambuf_char tmp;
1439 TRACE("(%p %p)\n", this, r);
1441 if(this == r)
1442 return;
1444 tmp = *this;
1445 *this = *r;
1446 this->vtable = tmp.vtable;
1447 tmp.vtable = r->vtable;
1448 *r = tmp;
1451 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
1452 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
1453 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
1454 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
1455 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp_next, 16)
1456 void __thiscall basic_streambuf_wchar_setp_next(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
1458 TRACE("(%p %p %p %p)\n", this, first, next, last);
1460 this->wbuf = first;
1461 this->wpos = next;
1462 this->wsize = last-next;
1465 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W0@Z */
1466 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W0@Z */
1467 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG0@Z */
1468 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG0@Z */
1469 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp, 12)
1470 void __thiscall basic_streambuf_wchar_setp(basic_streambuf_wchar *this, wchar_t *first, wchar_t *last)
1472 basic_streambuf_wchar_setp_next(this, first, first, last);
1475 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
1476 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
1477 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
1478 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
1479 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setg, 16)
1480 void __thiscall basic_streambuf_wchar_setg(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
1482 TRACE("(%p %p %p %p)\n", this, first, next, last);
1484 this->rbuf = first;
1485 this->rpos = next;
1486 this->rsize = last-next;
1489 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXXZ */
1490 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXXZ */
1491 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXXZ */
1492 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */
1493 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init_empty, 4)
1494 void __thiscall basic_streambuf_wchar__Init_empty(basic_streambuf_wchar *this)
1496 TRACE("(%p)\n", this);
1498 this->prbuf = &this->rbuf;
1499 this->pwbuf = &this->wbuf;
1500 this->prpos = &this->rpos;
1501 this->pwpos = &this->wpos;
1502 this->prsize = &this->rsize;
1503 this->pwsize = &this->wsize;
1505 basic_streambuf_wchar_setp(this, NULL, NULL);
1506 basic_streambuf_wchar_setg(this, NULL, NULL, NULL);
1509 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1510 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1511 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor_uninitialized, 8)
1512 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
1514 TRACE("(%p %d)\n", this, uninitialized);
1515 this->vtable = &basic_streambuf_wchar_vtable;
1516 return this;
1519 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1520 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1521 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor_uninitialized, 8)
1522 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
1524 TRACE("(%p %d)\n", this, uninitialized);
1525 basic_streambuf_wchar_ctor_uninitialized(this, uninitialized);
1526 this->vtable = &basic_streambuf_short_vtable;
1527 return this;
1530 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
1531 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
1532 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor, 4)
1533 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor(basic_streambuf_wchar *this)
1535 TRACE("(%p)\n", this);
1537 this->vtable = &basic_streambuf_wchar_vtable;
1538 locale_ctor(IOS_LOCALE(this));
1539 basic_streambuf_wchar__Init_empty(this);
1541 return this;
1544 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@XZ */
1545 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@XZ */
1546 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor, 4)
1547 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor(basic_streambuf_wchar *this)
1549 TRACE("(%p)\n", this);
1550 basic_streambuf_wchar_ctor(this);
1551 this->vtable = &basic_streambuf_short_vtable;
1552 return this;
1555 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
1556 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
1557 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
1558 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
1559 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_dtor, 4)
1560 void __thiscall basic_streambuf_wchar_dtor(basic_streambuf_wchar *this)
1562 TRACE("(%p)\n", this);
1563 locale_dtor(IOS_LOCALE(this));
1566 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_vector_dtor, 8)
1567 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_vector_dtor(basic_streambuf_wchar *this, unsigned int flags)
1569 TRACE("(%p %x)\n", this, flags);
1570 if(flags & 2) {
1571 /* we have an array, with the number of elements stored before the first object */
1572 INT_PTR i, *ptr = (INT_PTR *)this-1;
1574 for(i=*ptr-1; i>=0; i--)
1575 basic_streambuf_wchar_dtor(this+i);
1576 operator_delete(ptr);
1577 } else {
1578 basic_streambuf_wchar_dtor(this);
1579 if(flags & 1)
1580 operator_delete(this);
1583 return this;
1586 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
1587 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
1588 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
1589 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
1590 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gnavail, 4)
1591 streamsize __thiscall basic_streambuf_wchar__Gnavail(const basic_streambuf_wchar *this)
1593 TRACE("(%p)\n", this);
1594 return *this->prpos ? *this->prsize : 0;
1597 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1598 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1599 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1600 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1601 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gndec, 4)
1602 wchar_t* __thiscall basic_streambuf_wchar__Gndec(basic_streambuf_wchar *this)
1604 TRACE("(%p)\n", this);
1605 (*this->prsize)++;
1606 (*this->prpos)--;
1607 return *this->prpos;
1610 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1611 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1612 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1613 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1614 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gninc, 4)
1615 wchar_t* __thiscall basic_streambuf_wchar__Gninc(basic_streambuf_wchar *this)
1617 TRACE("(%p)\n", this);
1618 (*this->prsize)--;
1619 return (*this->prpos)++;
1622 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1623 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1624 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1625 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1626 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gnpreinc, 4)
1627 wchar_t* __thiscall basic_streambuf_wchar__Gnpreinc(basic_streambuf_wchar *this)
1629 TRACE("(%p)\n", this);
1630 (*this->prsize)--;
1631 (*this->prpos)++;
1632 return *this->prpos;
1635 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPAPA_W0PAH001@Z */
1636 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAPEA_W0PEAH001@Z */
1637 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAPAG0PAH001@Z */
1638 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAPEAG0PEAH001@Z */
1639 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init, 28)
1640 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)
1642 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
1644 this->prbuf = gf;
1645 this->pwbuf = pf;
1646 this->prpos = gn;
1647 this->pwpos = pn;
1648 this->prsize = gc;
1649 this->pwsize = pc;
1652 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
1653 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
1654 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
1655 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
1656 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Lock, 4)
1657 void __thiscall basic_streambuf_wchar__Lock(basic_streambuf_wchar *this)
1659 TRACE("(%p)\n", this);
1662 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
1663 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
1664 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
1665 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
1666 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pnavail, 4)
1667 streamsize __thiscall basic_streambuf_wchar__Pnavail(const basic_streambuf_wchar *this)
1669 TRACE("(%p)\n", this);
1670 return *this->pwpos ? *this->pwsize : 0;
1673 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1674 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1675 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1676 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1677 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pninc, 4)
1678 wchar_t* __thiscall basic_streambuf_wchar__Pninc(basic_streambuf_wchar *this)
1680 TRACE("(%p)\n", this);
1681 (*this->pwsize)--;
1682 return (*this->pwpos)++;
1685 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
1686 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
1687 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
1688 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
1689 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_underflow, 4)
1690 #define call_basic_streambuf_wchar_underflow(this) CALL_VTBL_FUNC(this, 16, unsigned short, (basic_streambuf_wchar*), (this))
1691 unsigned short __thiscall basic_streambuf_wchar_underflow(basic_streambuf_wchar *this)
1693 TRACE("(%p)\n", this);
1694 return WEOF;
1697 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
1698 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
1699 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
1700 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
1701 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_uflow, 4)
1702 #define call_basic_streambuf_wchar_uflow(this) CALL_VTBL_FUNC(this, 20, unsigned short, (basic_streambuf_wchar*), (this))
1703 unsigned short __thiscall basic_streambuf_wchar_uflow(basic_streambuf_wchar *this)
1705 int ret;
1707 TRACE("(%p)\n", this);
1709 if(call_basic_streambuf_wchar_underflow(this)==WEOF)
1710 return WEOF;
1712 ret = **this->prpos;
1713 (*this->prsize)--;
1714 (*this->prpos)++;
1715 return ret;
1718 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WIH@Z */
1719 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_K_J@Z */
1720 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGIH@Z */
1721 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_K_J@Z */
1722 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Xsgetn_s, 16)
1723 #define call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count) basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count)
1724 streamsize __thiscall basic_streambuf_wchar__Xsgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, size_t size, streamsize count)
1726 streamsize copied, chunk;
1727 unsigned short c;
1729 TRACE("(%p %p %Iu %Id)\n", this, ptr, size, count);
1731 for(copied=0; copied<count && size;) {
1732 chunk = basic_streambuf_wchar__Gnavail(this);
1733 if(chunk > count-copied)
1734 chunk = count-copied;
1736 if(chunk > 0) {
1737 memcpy_s(ptr+copied, size, *this->prpos, chunk*sizeof(wchar_t));
1738 *this->prpos += chunk;
1739 *this->prsize -= chunk;
1740 copied += chunk;
1741 size -= chunk*sizeof(wchar_t);
1742 }else if((c = call_basic_streambuf_wchar_uflow(this)) != WEOF) {
1743 ptr[copied] = c;
1744 copied++;
1745 size--;
1746 }else {
1747 break;
1751 return copied;
1754 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
1755 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
1756 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
1757 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
1758 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Sgetn_s, 16)
1759 streamsize __thiscall basic_streambuf_wchar__Sgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, size_t size, streamsize count)
1761 TRACE("(%p %p %Iu %Id)\n", this, ptr, size, count);
1762 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count);
1765 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
1766 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
1767 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
1768 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
1769 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Unlock, 4)
1770 void __thiscall basic_streambuf_wchar__Unlock(basic_streambuf_wchar *this)
1772 TRACE("(%p)\n", this);
1775 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1776 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1777 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1778 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1779 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_eback, 4)
1780 wchar_t* __thiscall basic_streambuf_wchar_eback(const basic_streambuf_wchar *this)
1782 TRACE("(%p)\n", this);
1783 return *this->prbuf;
1786 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1787 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1788 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1789 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1790 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gptr, 4)
1791 wchar_t* __thiscall basic_streambuf_wchar_gptr(const basic_streambuf_wchar *this)
1793 TRACE("(%p)\n", this);
1794 return *this->prpos;
1797 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1798 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1799 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1800 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1801 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_egptr, 4)
1802 wchar_t* __thiscall basic_streambuf_wchar_egptr(const basic_streambuf_wchar *this)
1804 TRACE("(%p)\n", this);
1805 return *this->prpos+*this->prsize;
1808 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1809 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1810 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1811 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1812 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_epptr, 4)
1813 wchar_t* __thiscall basic_streambuf_wchar_epptr(const basic_streambuf_wchar *this)
1815 TRACE("(%p)\n", this);
1816 return *this->pwpos+*this->pwsize;
1819 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
1820 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
1821 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
1822 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
1823 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gbump, 8)
1824 void __thiscall basic_streambuf_wchar_gbump(basic_streambuf_wchar *this, int off)
1826 TRACE("(%p %d)\n", this, off);
1827 *this->prpos += off;
1828 *this->prsize -= off;
1831 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QBE?AVlocale@2@XZ */
1832 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEBA?AVlocale@2@XZ */
1833 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QBE?AVlocale@2@XZ */
1834 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEBA?AVlocale@2@XZ */
1835 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_getloc, 8)
1836 locale* __thiscall basic_streambuf_wchar_getloc(const basic_streambuf_wchar *this, locale *ret)
1838 TRACE("(%p)\n", this);
1839 return locale_copy_ctor(ret, IOS_LOCALE(this));
1842 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
1843 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
1844 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
1845 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
1846 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_imbue, 8)
1847 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 48, void, (basic_streambuf_wchar*, const locale*), (this, loc))
1848 void __thiscall basic_streambuf_wchar_imbue(basic_streambuf_wchar *this, const locale *loc)
1850 TRACE("(%p %p)\n", this, loc);
1853 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
1854 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
1855 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
1856 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
1857 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_overflow, 8)
1858 #define call_basic_streambuf_wchar_overflow(this, ch) CALL_VTBL_FUNC(this, 4, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
1859 unsigned short __thiscall basic_streambuf_wchar_overflow(basic_streambuf_wchar *this, unsigned short ch)
1861 TRACE("(%p %d)\n", this, ch);
1862 return WEOF;
1865 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
1866 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
1867 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
1868 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
1869 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbackfail, 8)
1870 #define call_basic_streambuf_wchar_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
1871 unsigned short __thiscall basic_streambuf_wchar_pbackfail(basic_streambuf_wchar *this, unsigned short ch)
1873 TRACE("(%p %d)\n", this, ch);
1874 return WEOF;
1877 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1878 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1879 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1880 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1881 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbase, 4)
1882 wchar_t* __thiscall basic_streambuf_wchar_pbase(const basic_streambuf_wchar *this)
1884 TRACE("(%p)\n", this);
1885 return *this->pwbuf;
1888 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
1889 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
1890 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
1891 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
1892 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbump, 8)
1893 void __thiscall basic_streambuf_wchar_pbump(basic_streambuf_wchar *this, int off)
1895 TRACE("(%p %d)\n", this, off);
1896 *this->pwpos += off;
1897 *this->pwsize -= off;
1900 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1901 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1902 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1903 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1904 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pptr, 4)
1905 wchar_t* __thiscall basic_streambuf_wchar_pptr(const basic_streambuf_wchar *this)
1907 TRACE("(%p)\n", this);
1908 return *this->pwpos;
1911 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1912 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1913 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1914 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1915 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubimbue, 12)
1916 locale* __thiscall basic_streambuf_wchar_pubimbue(basic_streambuf_wchar *this, locale *ret, const locale *loc)
1918 TRACE("(%p %p)\n", this, loc);
1919 memcpy(ret, IOS_LOCALE(this), sizeof(locale));
1920 call_basic_streambuf_wchar_imbue(this, loc);
1921 locale_copy_ctor(IOS_LOCALE(this), loc);
1922 return ret;
1925 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
1926 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
1927 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1928 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1929 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1930 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1931 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekoff, 20)
1932 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 32, fpos_int*, (basic_streambuf_wchar*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
1933 fpos_int* __thiscall basic_streambuf_wchar_seekoff(basic_streambuf_wchar *this,
1934 fpos_int *ret, streamoff off, int way, int mode)
1936 TRACE("(%p %Id %d %d)\n", this, off, way, mode);
1937 ret->off = -1;
1938 ret->pos = 0;
1939 ret->state = 0;
1940 return ret;
1943 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1944 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1945 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1946 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1947 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JFF@Z */
1948 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JFF@Z */
1949 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
1950 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JW4seekdir@ioos_base@2@H@Z */
1951 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff, 20)
1952 fpos_int* __thiscall basic_streambuf_wchar_pubseekoff(basic_streambuf_wchar *this,
1953 fpos_int *ret, streamoff off, int way, int mode)
1955 TRACE("(%p %Id %d %d)\n", this, off, way, mode);
1956 return call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode);
1959 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
1960 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
1961 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
1962 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
1963 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff_old, 20)
1964 fpos_int* __thiscall basic_streambuf_wchar_pubseekoff_old(basic_streambuf_wchar *this,
1965 fpos_int *ret, streamoff off, unsigned int way, unsigned int mode)
1967 TRACE("(%p %Id %d %d)\n", this, off, way, mode);
1968 return basic_streambuf_wchar_pubseekoff(this, ret, off, way, mode);
1971 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1972 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1973 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1974 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1975 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekpos, 36)
1976 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 36, fpos_int*, (basic_streambuf_wchar*, fpos_int*, fpos_int, int), (this, ret, pos, mode))
1977 fpos_int* __thiscall basic_streambuf_wchar_seekpos(basic_streambuf_wchar *this,
1978 fpos_int *ret, fpos_int pos, int mode)
1980 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1981 ret->off = -1;
1982 ret->pos = 0;
1983 ret->state = 0;
1984 return ret;
1987 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1988 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1989 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1990 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1991 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos, 36)
1992 fpos_int* __thiscall basic_streambuf_wchar_pubseekpos(basic_streambuf_wchar *this,
1993 fpos_int *ret, fpos_int pos, int mode)
1995 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1996 return call_basic_streambuf_wchar_seekpos(this, ret, pos, mode);
1999 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
2000 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
2001 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
2002 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
2003 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos_old, 36)
2004 fpos_int* __thiscall basic_streambuf_wchar_pubseekpos_old(basic_streambuf_wchar *this,
2005 fpos_int *ret, fpos_int pos, unsigned int mode)
2007 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
2008 return basic_streambuf_wchar_pubseekpos(this, ret, pos, mode);
2011 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEPAV12@PA_WH@Z */
2012 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV12@PEA_W_J@Z */
2013 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEPAV12@PAGH@Z */
2014 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAPEAV12@PEAG_J@Z */
2015 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setbuf, 12)
2016 #define call_basic_streambuf_wchar_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 40, basic_streambuf_wchar*, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, buf, count))
2017 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_setbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
2019 TRACE("(%p %p %Id)\n", this, buf, count);
2020 return this;
2023 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PA_WH@Z */
2024 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEA_W_J@Z */
2025 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PAGH@Z */
2026 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEAG_J@Z */
2027 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsetbuf, 12)
2028 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_pubsetbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
2030 TRACE("(%p %p %Id)\n", this, buf, count);
2031 return call_basic_streambuf_wchar_setbuf(this, buf, count);
2034 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
2035 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
2036 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2037 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
2038 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sync, 4)
2039 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 44, int, (basic_streambuf_wchar*), (this))
2040 int __thiscall basic_streambuf_wchar_sync(basic_streambuf_wchar *this)
2042 TRACE("(%p)\n", this);
2043 return 0;
2046 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
2047 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
2048 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
2049 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHXZ */
2050 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsync, 4)
2051 int __thiscall basic_streambuf_wchar_pubsync(basic_streambuf_wchar *this)
2053 TRACE("(%p)\n", this);
2054 return call_basic_streambuf_wchar_sync(this);
2057 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WH@Z */
2058 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_J@Z */
2059 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGH@Z */
2060 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_J@Z */
2061 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsgetn, 12)
2062 #define call_basic_streambuf_wchar_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, streamsize, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, ptr, count))
2063 streamsize __thiscall basic_streambuf_wchar_xsgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2065 TRACE("(%p %p %Id)\n", this, ptr, count);
2066 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, -1, count);
2069 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
2070 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
2071 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
2072 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
2073 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetn, 12)
2074 streamsize __thiscall basic_streambuf_wchar_sgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2076 TRACE("(%p %p %Id)\n", this, ptr, count);
2077 return call_basic_streambuf_wchar_xsgetn(this, ptr, count);
2080 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
2081 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JXZ */
2082 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2083 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JXZ */
2084 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_showmanyc, 4)
2085 #define call_basic_streambuf_wchar_showmanyc(this) CALL_VTBL_FUNC(this, 12, streamsize, (basic_streambuf_wchar*), (this))
2086 streamsize __thiscall basic_streambuf_wchar_showmanyc(basic_streambuf_wchar *this)
2088 TRACE("(%p)\n", this);
2089 return 0;
2092 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
2093 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JXZ */
2094 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
2095 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JXZ */
2096 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_in_avail, 4)
2097 streamsize __thiscall basic_streambuf_wchar_in_avail(basic_streambuf_wchar *this)
2099 streamsize ret;
2101 TRACE("(%p)\n", this);
2103 ret = basic_streambuf_wchar__Gnavail(this);
2104 return ret ? ret : call_basic_streambuf_wchar_showmanyc(this);
2107 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
2108 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
2109 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
2110 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
2111 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputbackc, 8)
2112 unsigned short __thiscall basic_streambuf_wchar_sputbackc(basic_streambuf_wchar *this, wchar_t ch)
2114 TRACE("(%p %d)\n", this, ch);
2115 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
2116 (*this->prsize)++;
2117 (*this->prpos)--;
2118 return ch;
2121 return call_basic_streambuf_wchar_pbackfail(this, ch);
2124 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
2125 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
2126 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
2127 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHG@Z */
2128 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputc, 8)
2129 unsigned short __thiscall basic_streambuf_wchar_sputc(basic_streambuf_wchar *this, wchar_t ch)
2131 TRACE("(%p %d)\n", this, ch);
2132 return basic_streambuf_wchar__Pnavail(this) ?
2133 (*basic_streambuf_wchar__Pninc(this) = ch) :
2134 call_basic_streambuf_wchar_overflow(this, ch);
2137 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2138 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2139 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2140 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2141 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sungetc, 4)
2142 unsigned short __thiscall basic_streambuf_wchar_sungetc(basic_streambuf_wchar *this)
2144 TRACE("(%p)\n", this);
2145 if(*this->prpos && *this->prpos>*this->prbuf) {
2146 (*this->prsize)++;
2147 (*this->prpos)--;
2148 return **this->prpos;
2151 return call_basic_streambuf_wchar_pbackfail(this, WEOF);
2154 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2155 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2156 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2157 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2158 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_stossc, 4)
2159 void __thiscall basic_streambuf_wchar_stossc(basic_streambuf_wchar *this)
2161 TRACE("(%p)\n", this);
2162 if(basic_streambuf_wchar__Gnavail(this))
2163 basic_streambuf_wchar__Gninc(this);
2164 else
2165 call_basic_streambuf_wchar_uflow(this);
2168 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2169 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2170 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2171 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2172 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sbumpc, 4)
2173 unsigned short __thiscall basic_streambuf_wchar_sbumpc(basic_streambuf_wchar *this)
2175 TRACE("(%p)\n", this);
2176 return basic_streambuf_wchar__Gnavail(this) ?
2177 *basic_streambuf_wchar__Gninc(this) : call_basic_streambuf_wchar_uflow(this);
2180 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2181 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2182 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2183 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2184 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetc, 4)
2185 unsigned short __thiscall basic_streambuf_wchar_sgetc(basic_streambuf_wchar *this)
2187 TRACE("(%p)\n", this);
2188 return basic_streambuf_wchar__Gnavail(this) ?
2189 *basic_streambuf_wchar_gptr(this) : call_basic_streambuf_wchar_underflow(this);
2192 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2193 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2194 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2195 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2196 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_snextc, 4)
2197 unsigned short __thiscall basic_streambuf_wchar_snextc(basic_streambuf_wchar *this)
2199 TRACE("(%p)\n", this);
2201 if(basic_streambuf_wchar__Gnavail(this) > 1)
2202 return *basic_streambuf_wchar__Gnpreinc(this);
2203 return basic_streambuf_wchar_sbumpc(this)==WEOF ?
2204 WEOF : basic_streambuf_wchar_sgetc(this);
2207 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPB_WH@Z */
2208 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEB_W_J@Z */
2209 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPBGH@Z */
2210 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEBG_J@Z */
2211 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsputn, 12)
2212 #define call_basic_streambuf_wchar_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 28, streamsize, (basic_streambuf_wchar*, const wchar_t*, streamsize), (this, ptr, count))
2213 streamsize __thiscall basic_streambuf_wchar_xsputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2215 streamsize copied, chunk;
2217 TRACE("(%p %p %Id)\n", this, ptr, count);
2219 for(copied=0; copied<count;) {
2220 chunk = basic_streambuf_wchar__Pnavail(this);
2221 if(chunk > count-copied)
2222 chunk = count-copied;
2224 if(chunk > 0) {
2225 memcpy(*this->pwpos, ptr+copied, chunk*sizeof(wchar_t));
2226 *this->pwpos += chunk;
2227 *this->pwsize -= chunk;
2228 copied += chunk;
2229 }else if(call_basic_streambuf_wchar_overflow(this, ptr[copied]) != WEOF) {
2230 copied++;
2231 }else {
2232 break;
2236 return copied;
2239 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPB_WH@Z */
2240 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEB_W_J@Z */
2241 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPBGH@Z */
2242 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEBG_J@Z */
2243 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputn, 12)
2244 streamsize __thiscall basic_streambuf_wchar_sputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2246 TRACE("(%p %p %Id)\n", this, ptr, count);
2247 return call_basic_streambuf_wchar_xsputn(this, ptr, count);
2250 /* ?swap@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXAAV12@@Z */
2251 /* ?swap@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXAEAV12@@Z */
2252 /* ?swap@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */
2253 /* ?swap@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXAAV12@@Z */
2254 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_swap, 8)
2255 void __thiscall basic_streambuf_wchar_swap(basic_streambuf_wchar *this, basic_streambuf_wchar *r)
2257 basic_streambuf_wchar tmp;
2259 TRACE("(%p %p)\n", this, r);
2261 if(this == r)
2262 return;
2264 tmp = *this;
2265 *this = *r;
2266 this->vtable = tmp.vtable;
2267 tmp.vtable = r->vtable;
2268 *r = tmp;
2271 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
2272 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
2273 int basic_filebuf_char__Init__Stinit = 0;
2275 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
2276 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
2277 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Init, 12)
2278 void __thiscall basic_filebuf_char__Init(basic_filebuf_char *this, FILE *file, basic_filebuf__Initfl which)
2280 TRACE("(%p %p %d)\n", this, file, which);
2282 this->cvt = NULL;
2283 this->state0 = basic_filebuf_char__Init__Stinit;
2284 this->state = basic_filebuf_char__Init__Stinit;
2285 if(which == INITFL_new)
2286 this->str = NULL;
2287 this->close = (which == INITFL_open);
2288 this->file = file;
2290 basic_streambuf_char__Init_empty(&this->base);
2291 if(file)
2292 basic_streambuf_char__Init(&this->base, &file->_base, &file->_ptr,
2293 &file->_cnt, &file->_base, &file->_ptr, &file->_cnt);
2296 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z */
2297 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z */
2298 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt_cvt, 8)
2299 void __thiscall basic_filebuf_char__Initcvt_cvt(basic_filebuf_char *this, codecvt_char *cvt)
2301 TRACE("(%p %p)\n", this, cvt);
2303 if(codecvt_base_always_noconv(&cvt->base)) {
2304 this->cvt = NULL;
2305 }else {
2306 this->str = operator_new(sizeof(basic_string_char));
2307 MSVCP_basic_string_char_ctor(this->str);
2308 this->cvt = cvt;
2312 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXXZ */
2313 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */
2314 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt, 4)
2315 void __thiscall basic_filebuf_char__Initcvt(basic_filebuf_char *this)
2317 codecvt_char *cvt = codecvt_char_use_facet(IOS_LOCALE(&this->base));
2319 TRACE("(%p)\n", this);
2321 locale__Addfac(&this->loc, &cvt->base.facet, codecvt_char_id.id, LC_CTYPE);
2322 basic_filebuf_char__Initcvt_cvt( this, cvt );
2325 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@XZ */
2326 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@XZ */
2327 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_close, 4)
2328 basic_filebuf_char* __thiscall basic_filebuf_char_close(basic_filebuf_char *this)
2330 basic_filebuf_char *ret = this;
2332 TRACE("(%p)\n", this);
2334 if(!this->file || fclose(this->file))
2335 return NULL;
2337 basic_filebuf_char__Init(this, NULL, INITFL_close);
2338 return ret;
2341 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
2342 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
2343 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_file, 8)
2344 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_file(basic_filebuf_char *this, FILE *file)
2346 TRACE("(%p %p)\n", this, file);
2348 basic_streambuf_char_ctor(&this->base);
2349 this->base.vtable = &basic_filebuf_char_vtable;
2351 locale_ctor(&this->loc);
2352 basic_filebuf_char__Init(this, file, INITFL_new);
2353 return this;
2356 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
2357 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
2358 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor, 4)
2359 basic_filebuf_char* __thiscall basic_filebuf_char_ctor(basic_filebuf_char *this)
2361 return basic_filebuf_char_ctor_file(this, NULL);
2364 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
2365 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
2366 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_uninitialized, 8)
2367 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_uninitialized(basic_filebuf_char *this, int uninitialized)
2369 TRACE("(%p %d)\n", this, uninitialized);
2371 basic_streambuf_char_ctor_uninitialized(&this->base, 0);
2372 this->base.vtable = &basic_filebuf_char_vtable;
2373 locale_ctor(&this->loc);
2374 return this;
2377 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
2378 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
2379 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_dtor, 4)
2380 void __thiscall basic_filebuf_char_dtor(basic_filebuf_char *this)
2382 TRACE("(%p)\n", this);
2384 if(this->close)
2385 basic_filebuf_char_close(this);
2386 if(this->str) {
2387 MSVCP_basic_string_char_dtor(this->str);
2388 operator_delete(this->str);
2390 locale_dtor(&this->loc);
2391 basic_streambuf_char_dtor(&this->base);
2394 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_vector_dtor, 8)
2395 basic_filebuf_char* __thiscall basic_filebuf_char_vector_dtor(basic_filebuf_char *this, unsigned int flags)
2397 TRACE("(%p %x)\n", this, flags);
2398 if(flags & 2) {
2399 /* we have an array, with the number of elements stored before the first object */
2400 INT_PTR i, *ptr = (INT_PTR *)this-1;
2402 for(i=*ptr-1; i>=0; i--)
2403 basic_filebuf_char_dtor(this+i);
2404 operator_delete(ptr);
2405 } else {
2406 basic_filebuf_char_dtor(this);
2407 if(flags & 1)
2408 operator_delete(this);
2411 return this;
2414 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QBE_NXZ */
2415 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
2416 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_is_open, 4)
2417 bool __thiscall basic_filebuf_char_is_open(const basic_filebuf_char *this)
2419 TRACE("(%p)\n", this);
2420 return this->file != NULL;
2423 /* ?_Fiopen@std@@YAPAU_iobuf@@PB_WHH@Z */
2424 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEB_WHH@Z */
2425 FILE* __cdecl _Fiopen_wchar(const wchar_t *name, int mode, int prot)
2427 static const struct {
2428 int mode;
2429 const wchar_t str[4];
2430 const wchar_t str_bin[4];
2431 } str_mode[] = {
2432 {OPENMODE_out, L"w", L"wb"},
2433 {OPENMODE_out|OPENMODE_app, L"a", L"ab"},
2434 {OPENMODE_app, L"a", L"ab"},
2435 {OPENMODE_out|OPENMODE_trunc, L"w", L"wb"},
2436 {OPENMODE_in, L"r", L"rb"},
2437 {OPENMODE_in|OPENMODE_out, L"r+", L"r+b"},
2438 {OPENMODE_in|OPENMODE_out|OPENMODE_trunc, L"w+", L"w+b"},
2439 {OPENMODE_in|OPENMODE_out|OPENMODE_app, L"a+", L"a+b"},
2440 {OPENMODE_in|OPENMODE_app, L"a+", L"a+b"}
2443 int real_mode = mode & ~(OPENMODE_ate|OPENMODE__Nocreate|OPENMODE__Noreplace|OPENMODE_binary);
2444 size_t mode_idx;
2445 FILE *f = NULL;
2447 TRACE("(%s %d %d)\n", debugstr_w(name), mode, prot);
2449 for(mode_idx=0; mode_idx<ARRAY_SIZE(str_mode); mode_idx++)
2450 if(str_mode[mode_idx].mode == real_mode)
2451 break;
2452 if(mode_idx == ARRAY_SIZE(str_mode))
2453 return NULL;
2455 if((mode & OPENMODE__Nocreate) && !(f = _wfopen(name, L"r")))
2456 return NULL;
2457 else if(f)
2458 fclose(f);
2460 if((mode & OPENMODE__Noreplace) && (mode & (OPENMODE_out|OPENMODE_app))
2461 && (f = _wfopen(name, L"r"))) {
2462 fclose(f);
2463 return NULL;
2466 f = _wfsopen(name, (mode & OPENMODE_binary) ? str_mode[mode_idx].str_bin
2467 : str_mode[mode_idx].str, prot);
2468 if(!f)
2469 return NULL;
2471 if((mode & OPENMODE_ate) && fseek(f, 0, SEEK_END)) {
2472 fclose(f);
2473 return NULL;
2476 return f;
2479 /* ?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z */
2480 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEBDHH@Z */
2481 FILE* __cdecl _Fiopen(const char *name, int mode, int prot)
2483 wchar_t nameW[FILENAME_MAX];
2485 TRACE("(%s %d %d)\n", name, mode, prot);
2487 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
2488 return NULL;
2489 return _Fiopen_wchar(nameW, mode, prot);
2492 /* ?__Fiopen@std@@YAPAU_iobuf@@PBDH@Z */
2493 /* ?__Fiopen@std@@YAPEAU_iobuf@@PEBDH@Z */
2494 FILE* __cdecl ___Fiopen(const char *name, int mode)
2496 TRACE("(%p %d)\n", name, mode);
2497 return _Fiopen(name, mode, _SH_DENYNO);
2500 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WHH@Z */
2501 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
2502 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGHH@Z */
2503 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGHH@Z */
2504 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar, 16)
2505 basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar(basic_filebuf_char *this, const wchar_t *name, int mode, int prot)
2507 FILE *f = NULL;
2509 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
2511 if(basic_filebuf_char_is_open(this))
2512 return NULL;
2514 if(!(f = _Fiopen_wchar(name, mode, prot)))
2515 return NULL;
2517 basic_filebuf_char__Init(this, f, INITFL_open);
2518 basic_filebuf_char__Initcvt_cvt(this, codecvt_char_use_facet(IOS_LOCALE(&this->base)));
2519 return this;
2522 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WI@Z */
2523 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WI@Z */
2524 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGI@Z */
2525 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGI@Z */
2526 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar_mode, 12)
2527 basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar_mode(basic_filebuf_char *this, const wchar_t *name, unsigned int mode)
2529 return basic_filebuf_char_open_wchar(this, name, mode, SH_DENYNO);
2532 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDHH@Z */
2533 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDHH@Z */
2534 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open, 16)
2535 basic_filebuf_char* __thiscall basic_filebuf_char_open(basic_filebuf_char *this, const char *name, int mode, int prot)
2537 wchar_t nameW[FILENAME_MAX];
2539 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
2541 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
2542 return NULL;
2543 return basic_filebuf_char_open_wchar(this, nameW, mode, prot);
2546 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDF@Z */
2547 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDF@Z */
2548 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode_old, 12)
2549 basic_filebuf_char* __thiscall basic_filebuf_char_open_mode_old(basic_filebuf_char *this, const char *name, short mode)
2551 TRACE("(%p %p %d)\n", this, name, mode);
2552 return basic_filebuf_char_open(this, name, mode, SH_DENYNO);
2555 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDH@Z */
2556 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDH@Z */
2557 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDI@Z */
2558 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDI@Z */
2559 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode, 12)
2560 basic_filebuf_char* __thiscall basic_filebuf_char_open_mode(basic_filebuf_char *this, const char *name, unsigned int mode)
2562 return basic_filebuf_char_open(this, name, mode, SH_DENYNO);
2565 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
2566 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
2567 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_overflow, 8)
2568 int __thiscall basic_filebuf_char_overflow(basic_filebuf_char *this, int c)
2570 char *ptr, ch = c, *to_next;
2571 const char *from_next;
2572 int ret;
2575 TRACE("(%p %d)\n", this, c);
2577 if(!basic_filebuf_char_is_open(this))
2578 return EOF;
2579 if(c == EOF)
2580 return !c;
2582 if(!this->cvt)
2583 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
2585 from_next = &ch;
2586 MSVCP_basic_string_char_clear(this->str);
2587 MSVCP_basic_string_char_append_len_ch(this->str, 8, '\0');
2588 ptr = this->str->ptr;
2589 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1, &from_next,
2590 ptr, ptr+MSVCP_basic_string_char_length(this->str), &to_next);
2592 switch(ret) {
2593 case CODECVT_partial:
2594 if(from_next == &ch)
2595 return EOF;
2596 case CODECVT_ok:
2597 if(!fwrite(ptr, to_next-ptr, 1, this->file))
2598 return EOF;
2599 return c;
2600 case CODECVT_noconv:
2601 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
2602 default:
2603 return EOF;
2607 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
2608 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
2609 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_pbackfail, 8)
2610 int __thiscall basic_filebuf_char_pbackfail(basic_filebuf_char *this, int c)
2612 TRACE("(%p %d)\n", this, c);
2614 if(!basic_filebuf_char_is_open(this))
2615 return EOF;
2617 if(basic_streambuf_char_gptr(&this->base)>basic_streambuf_char_eback(&this->base)
2618 && (c==EOF || (int)(unsigned char)basic_streambuf_char_gptr(&this->base)[-1]==c)) {
2619 basic_streambuf_char__Gndec(&this->base);
2620 return c==EOF ? !c : c;
2621 }else if(c == EOF) {
2622 return EOF;
2623 }else if(!this->cvt) {
2624 return ungetc(c, this->file);
2625 }else if(MSVCP_basic_string_char_length(this->str)) {
2626 char *b, *e, *cur;
2628 e = this->str->ptr;
2629 b = e+this->str->size-1;
2630 for(cur = b; cur>=e; cur--) {
2631 if(ungetc(*cur, this->file) == EOF) {
2632 for(; cur<=b; cur++)
2633 fgetc(this->file);
2634 return EOF;
2637 MSVCP_basic_string_char_clear(this->str);
2638 this->state = this->state0;
2639 return c;
2642 return EOF;
2645 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2646 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2647 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_uflow, 4)
2648 int __thiscall basic_filebuf_char_uflow(basic_filebuf_char *this)
2650 char ch, *to_next;
2651 const char *buf_next;
2652 int c;
2654 TRACE("(%p)\n", this);
2656 if(!basic_filebuf_char_is_open(this))
2657 return EOF;
2659 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
2660 return (unsigned char)*basic_streambuf_char__Gninc(&this->base);
2662 c = fgetc(this->file);
2663 if(!this->cvt || c==EOF)
2664 return c;
2666 MSVCP_basic_string_char_clear(this->str);
2667 this->state0 = this->state;
2668 while(1) {
2669 MSVCP_basic_string_char_append_ch(this->str, c);
2670 this->state = this->state0;
2672 switch(codecvt_char_in(this->cvt, &this->state, this->str->ptr,
2673 this->str->ptr+this->str->size, &buf_next, &ch, &ch+1, &to_next)) {
2674 case CODECVT_partial:
2675 break;
2676 case CODECVT_noconv:
2677 return (unsigned char)this->str->ptr[0];
2678 case CODECVT_ok:
2679 return (unsigned char)ch;
2680 default:
2681 return EOF;
2684 c = fgetc(this->file);
2685 if(c == EOF)
2686 return EOF;
2690 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2691 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2692 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_underflow, 4)
2693 int __thiscall basic_filebuf_char_underflow(basic_filebuf_char *this)
2695 int ret;
2697 TRACE("(%p)\n", this);
2699 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
2700 return (unsigned char)*basic_streambuf_char_gptr(&this->base);
2702 ret = call_basic_streambuf_char_uflow(&this->base);
2703 if(ret != EOF)
2704 ret = call_basic_streambuf_char_pbackfail(&this->base, ret);
2705 return ret;
2708 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
2709 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
2710 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2711 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2712 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekoff, 20)
2713 fpos_int* __thiscall basic_filebuf_char_seekoff(basic_filebuf_char *this,
2714 fpos_int *ret, streamoff off, int way, int mode)
2716 fpos_t pos;
2718 TRACE("(%p %p %Id %d %d)\n", this, ret, off, way, mode);
2720 if(!basic_filebuf_char_is_open(this) || fseek(this->file, off, way)) {
2721 ret->off = -1;
2722 ret->pos = 0;
2723 ret->state = 0;
2724 return ret;
2727 fgetpos(this->file, &pos);
2728 ret->off = 0;
2729 ret->pos = pos;
2730 ret->state = this->state;
2731 return ret;
2734 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2735 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2736 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekpos, 36)
2737 fpos_int* __thiscall basic_filebuf_char_seekpos(basic_filebuf_char *this,
2738 fpos_int *ret, fpos_int pos, int mode)
2740 fpos_t fpos;
2742 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
2744 if(!basic_filebuf_char_is_open(this) || fseek(this->file, (LONG)pos.pos, SEEK_SET)
2745 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
2746 ret->off = -1;
2747 ret->pos = 0;
2748 ret->state = 0;
2749 return ret;
2752 fgetpos(this->file, &fpos);
2753 ret->off = 0;
2754 ret->pos = fpos;
2755 ret->state = this->state;
2756 return ret;
2759 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PADH@Z */
2760 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAD_J@Z */
2761 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_setbuf, 12)
2762 basic_streambuf_char* __thiscall basic_filebuf_char_setbuf(basic_filebuf_char *this, char *buf, streamsize count)
2764 TRACE("(%p %p %Id)\n", this, buf, count);
2766 if(!basic_filebuf_char_is_open(this))
2767 return NULL;
2769 if(setvbuf(this->file, buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count))
2770 return NULL;
2772 basic_filebuf_char__Init(this, this->file, INITFL_open);
2773 return &this->base;
2776 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2777 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2778 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_sync, 4)
2779 int __thiscall basic_filebuf_char_sync(basic_filebuf_char *this)
2781 TRACE("(%p)\n", this);
2783 if(!basic_filebuf_char_is_open(this))
2784 return 0;
2786 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
2787 return 0;
2788 return fflush(this->file);
2791 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
2792 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
2793 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_imbue, 8)
2794 void __thiscall basic_filebuf_char_imbue(basic_filebuf_char *this, const locale *loc)
2796 TRACE("(%p %p)\n", this, loc);
2797 basic_filebuf_char__Initcvt_cvt(this, codecvt_char_use_facet(loc));
2800 /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
2801 /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
2802 int basic_filebuf_wchar__Init__Stinit = 0;
2804 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
2805 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
2806 int basic_filebuf_short__Init__Stinit = 0;
2808 /* ?_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
2809 /* ?_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
2810 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Init, 12)
2811 void __thiscall basic_filebuf_wchar__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
2813 TRACE("(%p %p %d)\n", this, file, which);
2815 this->cvt = NULL;
2816 this->state0 = basic_filebuf_short__Init__Stinit;
2817 this->state = basic_filebuf_short__Init__Stinit;
2818 if(which == INITFL_new)
2819 this->str = NULL;
2820 this->close = (which == INITFL_open);
2821 this->file = file;
2823 basic_streambuf_wchar__Init_empty(&this->base);
2826 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
2827 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
2828 DEFINE_THISCALL_WRAPPER(basic_filebuf_short__Init, 12)
2829 void __thiscall basic_filebuf_short__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
2831 TRACE("(%p %p %d)\n", this, file, which);
2833 this->cvt = NULL;
2834 this->state0 = basic_filebuf_short__Init__Stinit;
2835 this->state = basic_filebuf_short__Init__Stinit;
2836 if(which == INITFL_new)
2837 this->str = NULL;
2838 this->close = (which == INITFL_open);
2839 this->file = file;
2841 basic_streambuf_wchar__Init_empty(&this->base);
2844 /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$codecvt@_WDH@2@@Z */
2845 /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$codecvt@_WDH@2@@Z */
2846 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAV?$codecvt@GDH@2@@Z */
2847 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$codecvt@GDH@2@@Z */
2848 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt_cvt, 8)
2849 void __thiscall basic_filebuf_wchar__Initcvt_cvt(basic_filebuf_wchar *this, codecvt_wchar *cvt)
2851 TRACE("(%p %p)\n", this, cvt);
2853 if(codecvt_base_always_noconv(&cvt->base)) {
2854 this->cvt = NULL;
2855 }else {
2856 basic_streambuf_wchar__Init_empty(&this->base);
2857 this->cvt = cvt;
2861 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXXZ */
2862 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */
2863 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt, 4)
2864 void __thiscall basic_filebuf_wchar__Initcvt(basic_filebuf_wchar *this)
2866 codecvt_wchar *cvt = codecvt_wchar_use_facet(IOS_LOCALE(&this->base));
2867 basic_filebuf_wchar__Initcvt_cvt( this, cvt );
2870 /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@XZ */
2871 /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@XZ */
2872 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@XZ */
2873 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@XZ */
2874 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_close, 4)
2875 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_close(basic_filebuf_wchar *this)
2877 basic_filebuf_wchar *ret = this;
2879 TRACE("(%p)\n", this);
2881 if(!this->file || fclose(this->file))
2882 return NULL;
2884 basic_filebuf_wchar__Init(this, NULL, INITFL_close);
2885 return ret;
2888 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
2889 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
2890 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_file, 8)
2891 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_file(basic_filebuf_wchar *this, FILE *file)
2893 TRACE("(%p %p)\n", this, file);
2895 basic_streambuf_wchar_ctor(&this->base);
2896 this->base.vtable = &basic_filebuf_wchar_vtable;
2898 locale_ctor(&this->loc);
2899 basic_filebuf_wchar__Init(this, file, INITFL_new);
2900 return this;
2903 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
2904 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
2905 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_file, 8)
2906 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_file(basic_filebuf_wchar *this, FILE *file)
2908 TRACE("(%p %p)\n", this, file);
2910 basic_streambuf_short_ctor(&this->base);
2911 this->base.vtable = &basic_filebuf_short_vtable;
2913 locale_ctor(&this->loc);
2914 basic_filebuf_short__Init(this, file, INITFL_new);
2915 return this;
2918 /* ??_F?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2919 /* ??_F?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2920 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor, 4)
2921 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor(basic_filebuf_wchar *this)
2923 return basic_filebuf_wchar_ctor_file(this, NULL);
2926 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2927 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2928 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor, 4)
2929 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor(basic_filebuf_wchar *this)
2931 return basic_filebuf_short_ctor_file(this, NULL);
2934 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */
2935 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
2936 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_uninitialized, 8)
2937 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
2939 TRACE("(%p %d)\n", this, uninitialized);
2941 basic_streambuf_wchar_ctor(&this->base);
2942 this->base.vtable = &basic_filebuf_wchar_vtable;
2943 return this;
2946 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
2947 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
2948 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_uninitialized, 8)
2949 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
2951 TRACE("(%p %d)\n", this, uninitialized);
2953 basic_streambuf_short_ctor_uninitialized(&this->base, 0);
2954 this->base.vtable = &basic_filebuf_short_vtable;
2955 locale_ctor(&this->loc);
2956 return this;
2959 /* ??1?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
2960 /* ??1?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
2961 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
2962 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
2963 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_dtor, 4)
2964 void __thiscall basic_filebuf_wchar_dtor(basic_filebuf_wchar *this)
2966 TRACE("(%p)\n", this);
2968 if(this->close)
2969 basic_filebuf_wchar_close(this);
2970 if(this->str) {
2971 MSVCP_basic_string_char_dtor(this->str);
2972 operator_delete(this->str);
2974 locale_dtor(&this->loc);
2975 basic_streambuf_wchar_dtor(&this->base);
2978 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_vector_dtor, 8)
2979 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_vector_dtor(basic_filebuf_wchar *this, unsigned int flags)
2981 TRACE("(%p %x)\n", this, flags);
2982 if(flags & 2) {
2983 /* we have an array, with the number of elements stored before the first object */
2984 INT_PTR i, *ptr = (INT_PTR *)this-1;
2986 for(i=*ptr-1; i>=0; i--)
2987 basic_filebuf_wchar_dtor(this+i);
2988 operator_delete(ptr);
2989 } else {
2990 basic_filebuf_wchar_dtor(this);
2991 if(flags & 1)
2992 operator_delete(this);
2995 return this;
2998 /* ?is_open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
2999 /* ?is_open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
3000 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QBE_NXZ */
3001 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
3002 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_is_open, 4)
3003 bool __thiscall basic_filebuf_wchar_is_open(const basic_filebuf_wchar *this)
3005 TRACE("(%p)\n", this);
3006 return this->file != NULL;
3009 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PB_WHH@Z */
3010 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3011 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBGHH@Z */
3012 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3013 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_wchar, 16)
3014 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot)
3016 FILE *f = NULL;
3018 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3020 if(basic_filebuf_wchar_is_open(this))
3021 return NULL;
3023 if(!(f = _Fiopen_wchar(name, mode, prot)))
3024 return NULL;
3026 basic_filebuf_wchar__Init(this, f, INITFL_open);
3027 basic_filebuf_wchar__Initcvt_cvt(this, codecvt_wchar_use_facet(IOS_LOCALE(&this->base)));
3028 return this;
3031 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WHH@Z */
3032 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3033 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGHH@Z */
3034 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3035 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_wchar, 16)
3036 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot)
3038 FILE *f = NULL;
3040 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3042 if(basic_filebuf_wchar_is_open(this))
3043 return NULL;
3045 if(!(f = _Fiopen_wchar(name, mode, prot)))
3046 return NULL;
3048 basic_filebuf_short__Init(this, f, INITFL_open);
3049 basic_filebuf_wchar__Initcvt_cvt(this, codecvt_short_use_facet(IOS_LOCALE(&this->base)));
3050 return this;
3053 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PB_WI@Z */
3054 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3055 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBGI@Z */
3056 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBGI@Z */
3057 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_wchar_mode, 12)
3058 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_wchar_mode(basic_filebuf_wchar *this, const wchar_t *name, unsigned int mode)
3060 return basic_filebuf_wchar_open_wchar(this, name, mode, SH_DENYNO);
3063 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WI@Z */
3064 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3065 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGI@Z */
3066 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGI@Z */
3067 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_wchar_mode, 12)
3068 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_wchar_mode(basic_filebuf_wchar *this, const wchar_t *name, unsigned int mode)
3070 return basic_filebuf_short_open_wchar(this, name, mode, SH_DENYNO);
3073 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDHH@Z */
3074 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3075 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open, 16)
3076 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open(basic_filebuf_wchar *this, const char *name, int mode, int prot)
3078 wchar_t nameW[FILENAME_MAX];
3080 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3082 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3083 return NULL;
3084 return basic_filebuf_wchar_open_wchar(this, nameW, mode, prot);
3087 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDHH@Z */
3088 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3089 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open, 16)
3090 basic_filebuf_wchar* __thiscall basic_filebuf_short_open(basic_filebuf_wchar *this, const char *name, int mode, int prot)
3092 wchar_t nameW[FILENAME_MAX];
3094 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3096 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3097 return NULL;
3098 return basic_filebuf_short_open_wchar(this, nameW, mode, prot);
3101 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDF@Z */
3102 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDF@Z */
3103 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_mode_old, 12)
3104 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_mode_old(basic_filebuf_wchar *this, const char *name, short mode)
3106 TRACE("(%p %p %d)\n", this, name, mode);
3107 return basic_filebuf_wchar_open(this, name, mode, SH_DENYNO);
3110 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDH@Z */
3111 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDH@Z */
3112 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDI@Z */
3113 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDI@Z */
3114 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_mode, 12)
3115 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
3117 return basic_filebuf_wchar_open(this, name, mode, SH_DENYNO);
3120 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDI@Z */
3121 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDI@Z */
3122 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_mode, 12)
3123 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
3125 return basic_filebuf_short_open(this, name, mode, SH_DENYNO);
3128 /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
3129 /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
3130 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
3131 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
3132 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_overflow, 8)
3133 unsigned short __thiscall basic_filebuf_wchar_overflow(basic_filebuf_wchar *this, unsigned short c)
3135 char *ptr, *to_next;
3136 wchar_t ch = c;
3137 const wchar_t *from_next;
3138 unsigned short ret;
3141 TRACE("(%p %d)\n", this, c);
3143 if(!basic_filebuf_wchar_is_open(this))
3144 return WEOF;
3145 if(c == WEOF)
3146 return !c;
3148 if(!this->cvt)
3149 return fwrite(&ch, sizeof(wchar_t), 1, this->file) ? c : WEOF;
3151 from_next = &ch;
3152 MSVCP_basic_string_char_clear(this->str);
3153 MSVCP_basic_string_char_append_len_ch(this->str, 8, '\0');
3154 ptr = this->str->ptr;
3155 ret = codecvt_wchar_out(this->cvt, &this->state, &ch, &ch+1, &from_next,
3156 ptr, ptr+MSVCP_basic_string_char_length(this->str), &to_next);
3158 switch(ret) {
3159 case CODECVT_partial:
3160 if(from_next == &ch)
3161 return WEOF;
3162 /* fall through */
3163 case CODECVT_ok:
3164 if(!fwrite(ptr, to_next-ptr, 1, this->file))
3165 return WEOF;
3166 return c;
3167 case CODECVT_noconv:
3168 return fwrite(&ch, sizeof(wchar_t), 1, this->file) ? c : WEOF;
3169 default:
3170 return WEOF;
3174 /* ?pbackfail@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
3175 /* ?pbackfail@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
3176 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
3177 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
3178 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_pbackfail, 8)
3179 unsigned short __thiscall basic_filebuf_wchar_pbackfail(basic_filebuf_wchar *this, unsigned short c)
3181 TRACE("(%p %d)\n", this, c);
3183 if(!basic_filebuf_wchar_is_open(this))
3184 return WEOF;
3186 if(basic_streambuf_wchar_gptr(&this->base)>basic_streambuf_wchar_eback(&this->base)
3187 && (c==WEOF || basic_streambuf_wchar_gptr(&this->base)[-1]==c)) {
3188 basic_streambuf_wchar__Gndec(&this->base);
3189 return c==WEOF ? !c : c;
3190 }else if(c == WEOF) {
3191 return WEOF;
3192 }else if(!this->cvt) {
3193 return ungetwc(c, this->file);
3194 }else if(MSVCP_basic_string_char_length(this->str)) {
3195 char *b, *e, *cur;
3197 e = this->str->ptr;
3198 b = e+this->str->size-1;
3199 for(cur = b; cur>=e; cur--) {
3200 if(ungetc(*cur, this->file) == EOF) {
3201 for(; cur<=b; cur++)
3202 fgetc(this->file);
3203 return WEOF;
3206 MSVCP_basic_string_char_clear(this->str);
3207 this->state = this->state0;
3208 return c;
3211 return WEOF;
3214 /* ?uflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
3215 /* ?uflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
3216 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
3217 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
3218 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_uflow, 4)
3219 unsigned short __thiscall basic_filebuf_wchar_uflow(basic_filebuf_wchar *this)
3221 wchar_t ch, *to_next;
3222 const char *buf_next;
3223 int c;
3225 TRACE("(%p)\n", this);
3227 if(!basic_filebuf_wchar_is_open(this))
3228 return WEOF;
3230 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
3231 return *basic_streambuf_wchar__Gninc(&this->base);
3233 if(!this->cvt)
3234 return fgetwc(this->file);
3236 MSVCP_basic_string_char_clear(this->str);
3237 this->state0 = this->state;
3238 while(1) {
3239 if((c = fgetc(this->file)) == EOF)
3240 return WEOF;
3241 MSVCP_basic_string_char_append_ch(this->str, c);
3242 this->state = this->state0;
3244 switch(codecvt_wchar_in(this->cvt, &this->state, this->str->ptr,
3245 this->str->ptr+this->str->size, &buf_next, &ch, &ch+1, &to_next)) {
3246 case CODECVT_partial:
3247 break;
3248 case CODECVT_noconv:
3249 if(this->str->size < sizeof(unsigned short)/sizeof(char))
3250 break;
3251 return *(unsigned short*)this->str->ptr;
3252 case CODECVT_ok:
3253 return (unsigned short)ch;
3254 default:
3255 return WEOF;
3260 /* ?underflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
3261 /* ?underflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
3262 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
3263 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
3264 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_underflow, 4)
3265 unsigned short __thiscall basic_filebuf_wchar_underflow(basic_filebuf_wchar *this)
3267 unsigned short ret;
3269 TRACE("(%p)\n", this);
3271 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
3272 return *basic_streambuf_wchar_gptr(&this->base);
3274 ret = call_basic_streambuf_wchar_uflow(&this->base);
3275 if(ret != WEOF)
3276 ret = call_basic_streambuf_wchar_pbackfail(&this->base, ret);
3277 return ret;
3280 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
3281 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
3282 /* ?seekoff@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3283 /* ?seekoff@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3284 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3285 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3286 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekoff, 20)
3287 fpos_int* __thiscall basic_filebuf_wchar_seekoff(basic_filebuf_wchar *this,
3288 fpos_int *ret, streamoff off, int way, int mode)
3290 fpos_t pos;
3292 TRACE("(%p %p %Id %d %d)\n", this, ret, off, way, mode);
3294 if(!basic_filebuf_wchar_is_open(this) || fseek(this->file, off, way)) {
3295 ret->off = -1;
3296 ret->pos = 0;
3297 ret->state = 0;
3298 return ret;
3301 fgetpos(this->file, &pos);
3302 ret->off = 0;
3303 ret->pos = pos;
3304 ret->state = this->state;
3305 return ret;
3308 /* ?seekpos@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3309 /* ?seekpos@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3310 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3311 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3312 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekpos, 36)
3313 fpos_int* __thiscall basic_filebuf_wchar_seekpos(basic_filebuf_wchar *this,
3314 fpos_int *ret, fpos_int pos, int mode)
3316 fpos_t fpos;
3318 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
3320 if(!basic_filebuf_wchar_is_open(this) || fseek(this->file, (LONG)pos.pos, SEEK_SET)
3321 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
3322 ret->off = -1;
3323 ret->pos = 0;
3324 ret->state = 0;
3325 return ret;
3328 fgetpos(this->file, &fpos);
3329 ret->off = 0;
3330 ret->pos = fpos;
3331 ret->state = this->state;
3332 return ret;
3335 /* ?setbuf@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PA_WH@Z */
3336 /* ?setbuf@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEA_W_J@Z */
3337 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_setbuf, 12)
3338 basic_streambuf_wchar* __thiscall basic_filebuf_wchar_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
3340 TRACE("(%p %p %Id)\n", this, buf, count);
3342 if(!basic_filebuf_wchar_is_open(this))
3343 return NULL;
3345 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
3346 return NULL;
3348 basic_filebuf_wchar__Init(this, this->file, INITFL_open);
3349 return &this->base;
3352 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAGH@Z */
3353 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAG_J@Z */
3354 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_setbuf, 12)
3355 basic_streambuf_wchar* __thiscall basic_filebuf_short_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
3357 TRACE("(%p %p %Id)\n", this, buf, count);
3359 if(!basic_filebuf_wchar_is_open(this))
3360 return NULL;
3362 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
3363 return NULL;
3365 basic_filebuf_short__Init(this, this->file, INITFL_open);
3366 return &this->base;
3369 /* ?sync@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
3370 /* ?sync@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
3371 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
3372 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
3373 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_sync, 4)
3374 int __thiscall basic_filebuf_wchar_sync(basic_filebuf_wchar *this)
3376 TRACE("(%p)\n", this);
3378 if(!basic_filebuf_wchar_is_open(this))
3379 return 0;
3381 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
3382 return 0;
3383 return fflush(this->file);
3386 /* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
3387 /* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
3388 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_imbue, 8)
3389 void __thiscall basic_filebuf_wchar_imbue(basic_filebuf_wchar *this, const locale *loc)
3391 TRACE("(%p %p)\n", this, loc);
3392 basic_filebuf_wchar__Initcvt_cvt(this, codecvt_wchar_use_facet(loc));
3395 /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
3396 /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
3397 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_imbue, 8)
3398 void __thiscall basic_filebuf_short_imbue(basic_filebuf_wchar *this, const locale *loc)
3400 TRACE("(%p %p)\n", this, loc);
3401 basic_filebuf_wchar__Initcvt_cvt(this, codecvt_short_use_facet(loc));
3404 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */
3405 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAHH@Z */
3406 /* ?_Mode@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */
3407 /* ?_Mode@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAHH@Z */
3408 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Getstate, 8)
3409 int __thiscall basic_stringbuf_char__Getstate(basic_stringbuf_char *this, IOSB_openmode mode)
3411 int state = 0;
3413 if(!(mode & OPENMODE_in))
3414 state |= STRINGBUF_no_read;
3416 if(!(mode & OPENMODE_out))
3417 state |= STRINGBUF_no_write;
3419 if(mode & OPENMODE_ate)
3420 state |= STRINGBUF_at_end;
3422 if(mode & OPENMODE_app)
3423 state |= STRINGBUF_append;
3425 return state;
3428 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXPBDIH@Z */
3429 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXPEBD_KH@Z */
3430 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Init, 16)
3431 void __thiscall basic_stringbuf_char__Init(basic_stringbuf_char *this, const char *str, size_t count, int state)
3433 TRACE("(%p, %p, %Iu, %d)\n", this, str, count, state);
3435 basic_streambuf_char__Init_empty(&this->base);
3437 this->state = state;
3438 this->seekhigh = NULL;
3440 if(count && str) {
3441 char *buf = operator_new(count);
3443 memcpy(buf, str, count);
3444 this->seekhigh = buf + count;
3446 this->state |= STRINGBUF_allocated;
3448 if(!(state & STRINGBUF_no_read))
3449 basic_streambuf_char_setg(&this->base, buf, buf, buf + count);
3451 if(!(state & STRINGBUF_no_write)) {
3452 basic_streambuf_char_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
3454 if(!basic_streambuf_char_gptr(&this->base))
3455 basic_streambuf_char_setg(&this->base, buf, 0, buf);
3460 /* ??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 */
3461 /* ??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 */
3462 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_str, 12)
3463 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_str(basic_stringbuf_char *this,
3464 const basic_string_char *str, IOSB_openmode mode)
3466 TRACE("(%p %p %d)\n", this, str, mode);
3468 basic_streambuf_char_ctor(&this->base);
3469 this->base.vtable = &basic_stringbuf_char_vtable;
3471 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str),
3472 str->size, basic_stringbuf_char__Getstate(this, mode));
3473 return this;
3476 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
3477 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
3478 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_mode, 8)
3479 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_mode(
3480 basic_stringbuf_char *this, IOSB_openmode mode)
3482 TRACE("(%p %d)\n", this, mode);
3484 basic_streambuf_char_ctor(&this->base);
3485 this->base.vtable = &basic_stringbuf_char_vtable;
3487 basic_stringbuf_char__Init(this, NULL, 0, basic_stringbuf_char__Getstate(this, mode));
3488 return this;
3491 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
3492 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
3493 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor, 4)
3494 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor(basic_stringbuf_char *this)
3496 return basic_stringbuf_char_ctor_mode(this, OPENMODE_in|OPENMODE_out);
3499 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXXZ */
3500 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXXZ */
3501 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Tidy, 4)
3502 void __thiscall basic_stringbuf_char__Tidy(basic_stringbuf_char *this)
3504 TRACE("(%p)\n", this);
3506 if(this->state & STRINGBUF_allocated) {
3507 operator_delete(basic_streambuf_char_eback(&this->base));
3508 this->seekhigh = NULL;
3509 this->state &= ~STRINGBUF_allocated;
3512 basic_streambuf_char__Init_empty(&this->base);
3515 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
3516 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
3517 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_dtor, 4)
3518 void __thiscall basic_stringbuf_char_dtor(basic_stringbuf_char *this)
3520 TRACE("(%p)\n", this);
3522 basic_stringbuf_char__Tidy(this);
3523 basic_streambuf_char_dtor(&this->base);
3526 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_vector_dtor, 8)
3527 basic_stringbuf_char* __thiscall basic_stringbuf_char_vector_dtor(basic_stringbuf_char *this, unsigned int flags)
3529 TRACE("(%p %x)\n", this, flags);
3531 if(flags & 2) {
3532 /* we have an array, with the number of elements stored before the first object */
3533 INT_PTR i, *ptr = (INT_PTR *) this - 1;
3535 for (i = *ptr - 1; i >= 0; i--)
3536 basic_stringbuf_char_dtor(this+i);
3538 operator_delete(ptr);
3539 }else {
3540 basic_stringbuf_char_dtor(this);
3542 if(flags & 1)
3543 operator_delete(this);
3546 return this;
3549 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
3550 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
3551 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_overflow, 8)
3552 int __thiscall basic_stringbuf_char_overflow(basic_stringbuf_char *this, int meta)
3554 size_t oldsize, size;
3555 char *ptr, *buf;
3557 TRACE("(%p %x)\n", this, meta);
3559 if(meta == EOF)
3560 return !EOF;
3561 if(this->state & STRINGBUF_no_write)
3562 return EOF;
3564 ptr = basic_streambuf_char_pptr(&this->base);
3565 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
3566 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
3567 this->seekhigh, basic_streambuf_char_epptr(&this->base));
3569 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
3570 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = meta);
3572 oldsize = (ptr ? basic_streambuf_char_epptr(&this->base)-basic_streambuf_char_eback(&this->base): 0);
3573 size = oldsize|0xf;
3574 size += size/2;
3575 buf = operator_new(size);
3577 if(!oldsize) {
3578 this->seekhigh = buf;
3579 basic_streambuf_char_setp(&this->base, buf, buf+size);
3580 if(this->state & STRINGBUF_no_read)
3581 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
3582 else
3583 basic_streambuf_char_setg(&this->base, buf, buf, buf+1);
3585 this->state |= STRINGBUF_allocated;
3586 }else {
3587 ptr = basic_streambuf_char_eback(&this->base);
3588 memcpy(buf, ptr, oldsize);
3590 this->seekhigh = buf+(this->seekhigh-ptr);
3591 basic_streambuf_char_setp_next(&this->base, buf,
3592 buf+(basic_streambuf_char_pptr(&this->base)-ptr), buf+size);
3593 if(this->state & STRINGBUF_no_read)
3594 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
3595 else
3596 basic_streambuf_char_setg(&this->base, buf,
3597 buf+(basic_streambuf_char_gptr(&this->base)-ptr),
3598 basic_streambuf_char_pptr(&this->base)+1);
3600 operator_delete(ptr);
3603 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = meta);
3606 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
3607 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
3608 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_pbackfail, 8)
3609 int __thiscall basic_stringbuf_char_pbackfail(basic_stringbuf_char *this, int c)
3611 char *cur;
3613 TRACE("(%p %x)\n", this, c);
3615 cur = basic_streambuf_char_gptr(&this->base);
3616 if(!cur || cur==basic_streambuf_char_eback(&this->base)
3617 || (c!=EOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
3618 return EOF;
3620 if(c != EOF)
3621 cur[-1] = c;
3622 basic_streambuf_char_gbump(&this->base, -1);
3623 return c==EOF ? !EOF : c;
3626 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHXZ */
3627 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHXZ */
3628 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_underflow, 4)
3629 int __thiscall basic_stringbuf_char_underflow(basic_stringbuf_char *this)
3631 char *ptr, *cur;
3633 TRACE("(%p)\n", this);
3635 cur = basic_streambuf_char_gptr(&this->base);
3636 if(!cur || this->state&STRINGBUF_no_read)
3637 return EOF;
3639 ptr = basic_streambuf_char_pptr(&this->base);
3640 if(this->seekhigh < ptr)
3641 this->seekhigh = ptr;
3643 ptr = basic_streambuf_char_egptr(&this->base);
3644 if(this->seekhigh > ptr)
3645 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base), cur, this->seekhigh);
3647 if(cur < this->seekhigh)
3648 return (unsigned char)*cur;
3649 return EOF;
3652 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
3653 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
3654 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3655 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3656 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekoff, 20)
3657 fpos_int* __thiscall basic_stringbuf_char_seekoff(basic_stringbuf_char *this,
3658 fpos_int *ret, streamoff off, int way, int mode)
3660 char *beg, *cur_r, *cur_w;
3662 TRACE("(%p %p %Id %d %d)\n", this, ret, off, way, mode);
3664 cur_w = basic_streambuf_char_pptr(&this->base);
3665 if(cur_w > this->seekhigh)
3666 this->seekhigh = cur_w;
3668 ret->off = 0;
3669 ret->pos = 0;
3670 ret->state = 0;
3672 beg = basic_streambuf_char_eback(&this->base);
3673 cur_r = basic_streambuf_char_gptr(&this->base);
3674 if((mode & OPENMODE_in) && cur_r) {
3675 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
3676 off += cur_r-beg;
3677 else if(way == SEEKDIR_end)
3678 off += this->seekhigh-beg;
3679 else if(way != SEEKDIR_beg)
3680 off = -1;
3682 if(off<0 || off>this->seekhigh-beg) {
3683 off = -1;
3684 }else {
3685 basic_streambuf_char_gbump(&this->base, beg-cur_r+off);
3686 if((mode & OPENMODE_out) && cur_w) {
3687 basic_streambuf_char_setp_next(&this->base, beg,
3688 basic_streambuf_char_gptr(&this->base),
3689 basic_streambuf_char_epptr(&this->base));
3692 }else if((mode & OPENMODE_out) && cur_w) {
3693 if(way == SEEKDIR_cur)
3694 off += cur_w-beg;
3695 else if(way == SEEKDIR_end)
3696 off += this->seekhigh-beg;
3697 else if(way != SEEKDIR_beg)
3698 off = -1;
3700 if(off<0 || off>this->seekhigh-beg)
3701 off = -1;
3702 else
3703 basic_streambuf_char_pbump(&this->base, beg-cur_w+off);
3704 }else {
3705 off = -1;
3708 ret->off = off;
3709 return ret;
3712 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3713 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3714 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekpos, 36)
3715 fpos_int* __thiscall basic_stringbuf_char_seekpos(basic_stringbuf_char *this,
3716 fpos_int *ret, fpos_int pos, int mode)
3718 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
3720 if(pos.off==-1 && pos.pos==0 && pos.state==0) {
3721 *ret = pos;
3722 return ret;
3725 return basic_stringbuf_char_seekoff(this, ret, pos.pos+pos.off, SEEKDIR_beg, mode);
3728 /* ?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 */
3729 /* ?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 */
3730 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_set, 8)
3731 void __thiscall basic_stringbuf_char_str_set(basic_stringbuf_char *this, const basic_string_char *str)
3733 TRACE("(%p %p)\n", this, str);
3735 basic_stringbuf_char__Tidy(this);
3736 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str), str->size, this->state);
3739 /* ?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 */
3740 /* ?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 */
3741 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_get, 8)
3742 basic_string_char* __thiscall basic_stringbuf_char_str_get(const basic_stringbuf_char *this, basic_string_char *ret)
3744 char *ptr;
3746 TRACE("(%p)\n", this);
3748 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_char_pptr(&this->base)) {
3749 char *pptr;
3751 ptr = basic_streambuf_char_pbase(&this->base);
3752 pptr = basic_streambuf_char_pptr(&this->base);
3754 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
3757 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_char_gptr(&this->base)) {
3758 ptr = basic_streambuf_char_eback(&this->base);
3759 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, basic_streambuf_char_egptr(&this->base) - ptr);
3762 return MSVCP_basic_string_char_ctor(ret);
3765 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEHH@Z */
3766 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAHH@Z */
3767 /* ?_Mode@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEHH@Z */
3768 /* ?_Mode@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAHH@Z */
3769 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short__Getstate, 8)
3770 int __thiscall basic_stringbuf_short__Getstate(basic_stringbuf_wchar *this, IOSB_openmode mode)
3772 int state = 0;
3774 if(!(mode & OPENMODE_in))
3775 state |= STRINGBUF_no_read;
3777 if(!(mode & OPENMODE_out))
3778 state |= STRINGBUF_no_write;
3780 if(mode & OPENMODE_ate)
3781 state |= STRINGBUF_at_end;
3783 if(mode & OPENMODE_app)
3784 state |= STRINGBUF_append;
3786 return state;
3789 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXPBGIH@Z */
3790 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXPEBG_KH@Z */
3791 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short__Init, 16)
3792 void __thiscall basic_stringbuf_short__Init(basic_stringbuf_wchar *this, const wchar_t *str, size_t count, int state)
3794 TRACE("(%p, %p, %Iu, %d)\n", this, str, count, state);
3796 basic_streambuf_wchar__Init_empty(&this->base);
3798 this->state = state;
3799 this->seekhigh = NULL;
3801 if(count && str) {
3802 wchar_t *buf = operator_new(count*sizeof(wchar_t));
3804 memcpy(buf, str, count*sizeof(wchar_t));
3805 this->seekhigh = buf + count;
3807 this->state |= STRINGBUF_allocated;
3809 if(!(state & STRINGBUF_no_read))
3810 basic_streambuf_wchar_setg(&this->base, buf, buf, buf + count);
3812 if(!(state & STRINGBUF_no_write)) {
3813 basic_streambuf_wchar_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
3815 if(!basic_streambuf_wchar_gptr(&this->base))
3816 basic_streambuf_wchar_setg(&this->base, buf, 0, buf);
3821 /* ??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 */
3822 /* ??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 */
3823 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_str, 12)
3824 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_str(basic_stringbuf_wchar *this,
3825 const basic_string_wchar *str, IOSB_openmode mode)
3827 TRACE("(%p %p %d)\n", this, str, mode);
3829 basic_streambuf_wchar_ctor(&this->base);
3830 this->base.vtable = &basic_stringbuf_short_vtable;
3832 basic_stringbuf_short__Init(this, MSVCP_basic_string_wchar_c_str(str),
3833 str->size, basic_stringbuf_short__Getstate(this, mode));
3834 return this;
3837 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
3838 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
3839 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_mode, 8)
3840 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_mode(
3841 basic_stringbuf_wchar *this, IOSB_openmode mode)
3843 TRACE("(%p %d)\n", this, mode);
3845 basic_streambuf_wchar_ctor(&this->base);
3846 this->base.vtable = &basic_stringbuf_short_vtable;
3848 basic_stringbuf_short__Init(this, NULL, 0, basic_stringbuf_short__Getstate(this, mode));
3849 return this;
3852 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
3853 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
3854 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor, 4)
3855 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor(basic_stringbuf_wchar *this)
3857 return basic_stringbuf_short_ctor_mode(this, OPENMODE_in|OPENMODE_out);
3860 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXXZ */
3861 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXXZ */
3862 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short__Tidy, 4)
3863 void __thiscall basic_stringbuf_short__Tidy(basic_stringbuf_wchar *this)
3865 TRACE("(%p)\n", this);
3867 if(this->state & STRINGBUF_allocated) {
3868 operator_delete(basic_streambuf_wchar_eback(&this->base));
3869 this->seekhigh = NULL;
3870 this->state &= ~STRINGBUF_allocated;
3873 basic_streambuf_wchar__Init_empty(&this->base);
3876 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
3877 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
3878 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_dtor, 4)
3879 void __thiscall basic_stringbuf_short_dtor(basic_stringbuf_wchar *this)
3881 TRACE("(%p)\n", this);
3883 basic_stringbuf_short__Tidy(this);
3884 basic_streambuf_wchar_dtor(&this->base);
3887 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_vector_dtor, 8)
3888 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_vector_dtor(basic_stringbuf_wchar *this, unsigned int flags)
3890 TRACE("(%p %x)\n", this, flags);
3892 if(flags & 2) {
3893 /* we have an array, with the number of elements stored before the first object */
3894 INT_PTR i, *ptr = (INT_PTR *) this - 1;
3896 for (i = *ptr - 1; i >= 0; i--)
3897 basic_stringbuf_short_dtor(this+i);
3899 operator_delete(ptr);
3900 }else {
3901 basic_stringbuf_short_dtor(this);
3903 if(flags & 1)
3904 operator_delete(this);
3907 return this;
3910 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
3911 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
3912 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_overflow, 8)
3913 unsigned short __thiscall basic_stringbuf_short_overflow(basic_stringbuf_wchar *this, unsigned short meta)
3915 size_t oldsize, size;
3916 wchar_t *ptr, *buf;
3918 TRACE("(%p %x)\n", this, meta);
3920 if(meta == WEOF)
3921 return !WEOF;
3922 if(this->state & STRINGBUF_no_write)
3923 return WEOF;
3925 ptr = basic_streambuf_wchar_pptr(&this->base);
3926 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
3927 basic_streambuf_wchar_setp_next(&this->base, basic_streambuf_wchar_pbase(&this->base),
3928 this->seekhigh, basic_streambuf_wchar_epptr(&this->base));
3930 if(ptr && ptr<basic_streambuf_wchar_epptr(&this->base))
3931 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
3933 oldsize = (ptr ? basic_streambuf_wchar_epptr(&this->base)-basic_streambuf_wchar_eback(&this->base): 0);
3934 size = oldsize|0xf;
3935 size += size/2;
3936 buf = operator_new(size*sizeof(wchar_t));
3938 if(!oldsize) {
3939 this->seekhigh = buf;
3940 basic_streambuf_wchar_setp(&this->base, buf, buf+size);
3941 if(this->state & STRINGBUF_no_read)
3942 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
3943 else
3944 basic_streambuf_wchar_setg(&this->base, buf, buf, buf+1);
3946 this->state |= STRINGBUF_allocated;
3947 }else {
3948 ptr = basic_streambuf_wchar_eback(&this->base);
3949 memcpy(buf, ptr, oldsize*sizeof(wchar_t));
3951 this->seekhigh = buf+(this->seekhigh-ptr);
3952 basic_streambuf_wchar_setp_next(&this->base, buf,
3953 buf+(basic_streambuf_wchar_pptr(&this->base)-ptr), buf+size);
3954 if(this->state & STRINGBUF_no_read)
3955 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
3956 else
3957 basic_streambuf_wchar_setg(&this->base, buf,
3958 buf+(basic_streambuf_wchar_gptr(&this->base)-ptr),
3959 basic_streambuf_wchar_pptr(&this->base)+1);
3961 operator_delete(ptr);
3964 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
3967 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
3968 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
3969 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_pbackfail, 8)
3970 unsigned short __thiscall basic_stringbuf_short_pbackfail(basic_stringbuf_wchar *this, unsigned short c)
3972 wchar_t *cur;
3974 TRACE("(%p %x)\n", this, c);
3976 cur = basic_streambuf_wchar_gptr(&this->base);
3977 if(!cur || cur==basic_streambuf_wchar_eback(&this->base)
3978 || (c!=WEOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
3979 return WEOF;
3981 if(c != WEOF)
3982 cur[-1] = c;
3983 basic_streambuf_wchar_gbump(&this->base, -1);
3984 return c==WEOF ? !WEOF : c;
3987 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGXZ */
3988 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGXZ */
3989 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_underflow, 4)
3990 unsigned short __thiscall basic_stringbuf_short_underflow(basic_stringbuf_wchar *this)
3992 wchar_t *ptr, *cur;
3994 TRACE("(%p)\n", this);
3996 cur = basic_streambuf_wchar_gptr(&this->base);
3997 if(!cur || this->state&STRINGBUF_no_read)
3998 return WEOF;
4000 ptr = basic_streambuf_wchar_pptr(&this->base);
4001 if(this->seekhigh < ptr)
4002 this->seekhigh = ptr;
4004 ptr = basic_streambuf_wchar_egptr(&this->base);
4005 if(this->seekhigh > ptr)
4006 basic_streambuf_wchar_setg(&this->base, basic_streambuf_wchar_eback(&this->base), cur, this->seekhigh);
4008 if(cur < this->seekhigh)
4009 return *cur;
4010 return WEOF;
4013 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
4014 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
4015 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4016 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4017 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_seekoff, 20)
4018 fpos_int* __thiscall basic_stringbuf_short_seekoff(basic_stringbuf_wchar *this,
4019 fpos_int *ret, streamoff off, int way, int mode)
4021 wchar_t *beg, *cur_r, *cur_w;
4023 TRACE("(%p %p %Id %d %d)\n", this, ret, off, way, mode);
4025 cur_w = basic_streambuf_wchar_pptr(&this->base);
4026 if(cur_w > this->seekhigh)
4027 this->seekhigh = cur_w;
4029 ret->off = 0;
4030 ret->pos = 0;
4031 ret->state = 0;
4033 beg = basic_streambuf_wchar_eback(&this->base);
4034 cur_r = basic_streambuf_wchar_gptr(&this->base);
4035 if((mode & OPENMODE_in) && cur_r) {
4036 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
4037 off += cur_r-beg;
4038 else if(way == SEEKDIR_end)
4039 off += this->seekhigh-beg;
4040 else if(way != SEEKDIR_beg)
4041 off = -1;
4043 if(off<0 || off>this->seekhigh-beg) {
4044 off = -1;
4045 }else {
4046 basic_streambuf_wchar_gbump(&this->base, beg-cur_r+off);
4047 if((mode & OPENMODE_out) && cur_w) {
4048 basic_streambuf_wchar_setp_next(&this->base, beg,
4049 basic_streambuf_wchar_gptr(&this->base),
4050 basic_streambuf_wchar_epptr(&this->base));
4053 }else if((mode & OPENMODE_out) && cur_w) {
4054 if(way == SEEKDIR_cur)
4055 off += cur_w-beg;
4056 else if(way == SEEKDIR_end)
4057 off += this->seekhigh-beg;
4058 else if(way != SEEKDIR_beg)
4059 off = -1;
4061 if(off<0 || off>this->seekhigh-beg)
4062 off = -1;
4063 else
4064 basic_streambuf_wchar_pbump(&this->base, beg-cur_w+off);
4065 }else {
4066 off = -1;
4069 ret->off = off;
4070 return ret;
4073 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4074 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4075 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_seekpos, 36)
4076 fpos_int* __thiscall basic_stringbuf_short_seekpos(basic_stringbuf_wchar *this,
4077 fpos_int *ret, fpos_int pos, int mode)
4079 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
4081 if(pos.off==-1 && pos.pos==0 && pos.state==0) {
4082 *ret = pos;
4083 return ret;
4086 return basic_stringbuf_short_seekoff(this, ret, pos.pos+pos.off, SEEKDIR_beg, mode);
4089 /* ?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 */
4090 /* ?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 */
4091 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_str_set, 8)
4092 void __thiscall basic_stringbuf_short_str_set(basic_stringbuf_wchar *this, const basic_string_wchar *str)
4094 TRACE("(%p %p)\n", this, str);
4096 basic_stringbuf_short__Tidy(this);
4097 basic_stringbuf_short__Init(this, MSVCP_basic_string_wchar_c_str(str), str->size, this->state);
4100 /* ?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 */
4101 /* ?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 */
4102 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_str_get, 8)
4103 basic_string_wchar* __thiscall basic_stringbuf_short_str_get(const basic_stringbuf_wchar *this, basic_string_wchar *ret)
4105 wchar_t *ptr;
4107 TRACE("(%p)\n", this);
4109 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_wchar_pptr(&this->base)) {
4110 wchar_t *pptr;
4112 ptr = basic_streambuf_wchar_pbase(&this->base);
4113 pptr = basic_streambuf_wchar_pptr(&this->base);
4115 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
4118 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_wchar_gptr(&this->base)) {
4119 ptr = basic_streambuf_wchar_eback(&this->base);
4120 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, basic_streambuf_wchar_egptr(&this->base) - ptr);
4123 return MSVCP_basic_string_wchar_ctor(ret);
4126 /* ??0ios_base@std@@IAE@XZ */
4127 /* ??0ios_base@std@@IEAA@XZ */
4128 DEFINE_THISCALL_WRAPPER(ios_base_ctor, 4)
4129 ios_base* __thiscall ios_base_ctor(ios_base *this)
4131 TRACE("(%p)\n", this);
4132 this->vtable = &ios_base_vtable;
4133 locale_ctor_uninitialized(IOS_LOCALE(this), 0);
4134 return this;
4137 /* ??0ios_base@std@@QAE@ABV01@@Z */
4138 /* ??0ios_base@std@@QEAA@AEBV01@@Z */
4139 DEFINE_THISCALL_WRAPPER(ios_base_copy_ctor, 8)
4140 ios_base* __thiscall ios_base_copy_ctor(ios_base *this, const ios_base *copy)
4142 TRACE("(%p %p)\n", this, copy);
4143 *this = *copy;
4144 this->vtable = &ios_base_vtable;
4145 return this;
4148 /* ?_Callfns@ios_base@std@@AAEXW4event@12@@Z */
4149 /* ?_Callfns@ios_base@std@@AEAAXW4event@12@@Z */
4150 DEFINE_THISCALL_WRAPPER(ios_base_Callfns, 8)
4151 void __thiscall ios_base_Callfns(ios_base *this, IOS_BASE_event event)
4153 IOS_BASE_fnarray *cur;
4155 TRACE("(%p %x)\n", this, event);
4157 for(cur=this->calls; cur; cur=cur->next)
4158 cur->event_handler(event, this, cur->index);
4161 /* ?_Tidy@ios_base@std@@AAAXXZ */
4162 /* ?_Tidy@ios_base@std@@AEAAXXZ */
4163 void __cdecl ios_base_Tidy(ios_base *this)
4165 IOS_BASE_iosarray *arr_cur, *arr_next;
4166 IOS_BASE_fnarray *event_cur, *event_next;
4168 TRACE("(%p)\n", this);
4170 ios_base_Callfns(this, EVENT_erase_event);
4172 for(arr_cur=this->arr; arr_cur; arr_cur=arr_next) {
4173 arr_next = arr_cur->next;
4174 operator_delete(arr_cur);
4176 this->arr = NULL;
4178 for(event_cur=this->calls; event_cur; event_cur=event_next) {
4179 event_next = event_cur->next;
4180 operator_delete(event_cur);
4182 this->calls = NULL;
4185 /* ?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z */
4186 /* ?_Ios_base_dtor@ios_base@std@@CAXPEAV12@@Z */
4187 void __cdecl ios_base_Ios_base_dtor(ios_base *obj)
4189 TRACE("(%p)\n", obj);
4190 locale_dtor(IOS_LOCALE(obj));
4191 ios_base_Tidy(obj);
4194 /* ??1ios_base@std@@UAE@XZ */
4195 /* ??1ios_base@std@@UEAA@XZ */
4196 DEFINE_THISCALL_WRAPPER(ios_base_dtor, 4)
4197 void __thiscall ios_base_dtor(ios_base *this)
4199 ios_base_Ios_base_dtor(this);
4202 DEFINE_THISCALL_WRAPPER(ios_base_vector_dtor, 8)
4203 ios_base* __thiscall ios_base_vector_dtor(ios_base *this, unsigned int flags)
4205 TRACE("(%p %x)\n", this, flags);
4206 if(flags & 2) {
4207 /* we have an array, with the number of elements stored before the first object */
4208 INT_PTR i, *ptr = (INT_PTR *)this-1;
4210 for(i=*ptr-1; i>=0; i--)
4211 ios_base_dtor(this+i);
4212 operator_delete(ptr);
4213 } else {
4214 ios_base_dtor(this);
4215 if(flags & 1)
4216 operator_delete(this);
4219 return this;
4222 DEFINE_THISCALL_WRAPPER(iosb_vector_dtor, 8)
4223 void* __thiscall iosb_vector_dtor(void *this, unsigned int flags)
4225 TRACE("(%p %x)\n", this, flags);
4226 if(flags & 2) {
4227 INT_PTR *ptr = (INT_PTR *)this-1;
4228 operator_delete(ptr);
4229 } else {
4230 if(flags & 1)
4231 operator_delete(this);
4234 return this;
4237 /* ?_Findarr@ios_base@std@@AAEAAU_Iosarray@12@H@Z */
4238 /* ?_Findarr@ios_base@std@@AEAAAEAU_Iosarray@12@H@Z */
4239 DEFINE_THISCALL_WRAPPER(ios_base_Findarr, 8)
4240 IOS_BASE_iosarray* __thiscall ios_base_Findarr(ios_base *this, int index)
4242 IOS_BASE_iosarray *p;
4244 TRACE("(%p %d)\n", this, index);
4246 for(p=this->arr; p; p=p->next) {
4247 if(p->index == index)
4248 return p;
4251 for(p=this->arr; p; p=p->next) {
4252 if(!p->long_val && !p->ptr_val) {
4253 p->index = index;
4254 return p;
4258 p = operator_new(sizeof(IOS_BASE_iosarray));
4259 p->next = this->arr;
4260 p->index = index;
4261 p->long_val = 0;
4262 p->ptr_val = NULL;
4263 this->arr = p;
4264 return p;
4267 /* ?iword@ios_base@std@@QAEAAJH@Z */
4268 /* ?iword@ios_base@std@@QEAAAEAJH@Z */
4269 DEFINE_THISCALL_WRAPPER(ios_base_iword, 8)
4270 LONG* __thiscall ios_base_iword(ios_base *this, int index)
4272 TRACE("(%p %d)\n", this, index);
4273 return &ios_base_Findarr(this, index)->long_val;
4276 /* ?pword@ios_base@std@@QAEAAPAXH@Z */
4277 /* ?pword@ios_base@std@@QEAAAEAPEAXH@Z */
4278 DEFINE_THISCALL_WRAPPER(ios_base_pword, 8)
4279 void** __thiscall ios_base_pword(ios_base *this, int index)
4281 TRACE("(%p %d)\n", this, index);
4282 return &ios_base_Findarr(this, index)->ptr_val;
4285 /* ?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z */
4286 /* ?register_callback@ios_base@std@@QEAAXP6AXW4event@12@AEAV12@H@ZH@Z */
4287 DEFINE_THISCALL_WRAPPER(ios_base_register_callback, 12)
4288 void __thiscall ios_base_register_callback(ios_base *this, IOS_BASE_event_callback callback, int index)
4290 IOS_BASE_fnarray *event;
4292 TRACE("(%p %p %d)\n", this, callback, index);
4294 event = operator_new(sizeof(IOS_BASE_fnarray));
4295 event->next = this->calls;
4296 event->index = index;
4297 event->event_handler = callback;
4298 this->calls = event;
4301 /* ?clear@ios_base@std@@QAEXH_N@Z */
4302 /* ?clear@ios_base@std@@QEAAXH_N@Z */
4303 DEFINE_THISCALL_WRAPPER(ios_base_clear_reraise, 12)
4304 void __thiscall ios_base_clear_reraise(ios_base *this, IOSB_iostate state, bool reraise)
4306 TRACE("(%p %x %x)\n", this, state, reraise);
4308 this->state = state & IOSTATE_mask;
4309 if(!(this->state & this->except))
4310 return;
4312 if(reraise)
4313 _CxxThrowException(NULL, NULL);
4314 else if(this->state & this->except & IOSTATE_eofbit)
4315 throw_failure("eofbit is set");
4316 else if(this->state & this->except & IOSTATE_failbit)
4317 throw_failure("failbit is set");
4318 else if(this->state & this->except & IOSTATE_badbit)
4319 throw_failure("badbit is set");
4320 else if(this->state & this->except & IOSTATE__Hardfail)
4321 throw_failure("_Hardfail is set");
4324 /* ?clear@ios_base@std@@QAEXH@Z */
4325 /* ?clear@ios_base@std@@QEAAXH@Z */
4326 DEFINE_THISCALL_WRAPPER(ios_base_clear, 8)
4327 void __thiscall ios_base_clear(ios_base *this, IOSB_iostate state)
4329 ios_base_clear_reraise(this, state, FALSE);
4332 /* ?clear@ios_base@std@@QAEXI@Z */
4333 /* ?clear@ios_base@std@@QEAAXI@Z */
4334 DEFINE_THISCALL_WRAPPER(ios_base_clear_unsigned, 8)
4335 void __thiscall ios_base_clear_unsigned(ios_base *this, unsigned int state)
4337 ios_base_clear_reraise(this, (IOSB_iostate)state, FALSE);
4340 /* ?exceptions@ios_base@std@@QAEXH@Z */
4341 /* ?exceptions@ios_base@std@@QEAAXH@Z */
4342 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set, 8)
4343 void __thiscall ios_base_exceptions_set(ios_base *this, IOSB_iostate state)
4345 TRACE("(%p %x)\n", this, state);
4346 this->except = state & IOSTATE_mask;
4347 ios_base_clear(this, this->state);
4350 /* ?exceptions@ios_base@std@@QAEXI@Z */
4351 /* ?exceptions@ios_base@std@@QEAAXI@Z */
4352 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set_unsigned, 8)
4353 void __thiscall ios_base_exceptions_set_unsigned(ios_base *this, unsigned int state)
4355 TRACE("(%p %x)\n", this, state);
4356 ios_base_exceptions_set(this, state);
4359 /* ?exceptions@ios_base@std@@QBEHXZ */
4360 /* ?exceptions@ios_base@std@@QEBAHXZ */
4361 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_get, 4)
4362 IOSB_iostate __thiscall ios_base_exceptions_get(ios_base *this)
4364 TRACE("(%p)\n", this);
4365 return this->except;
4368 /* ?copyfmt@ios_base@std@@QAEAAV12@ABV12@@Z */
4369 /* ?copyfmt@ios_base@std@@QEAAAEAV12@AEBV12@@Z */
4370 DEFINE_THISCALL_WRAPPER(ios_base_copyfmt, 8)
4371 ios_base* __thiscall ios_base_copyfmt(ios_base *this, const ios_base *rhs)
4373 TRACE("(%p %p)\n", this, rhs);
4375 if(this != rhs) {
4376 IOS_BASE_iosarray *arr_cur;
4377 IOS_BASE_fnarray *event_cur;
4379 ios_base_Tidy(this);
4381 for(arr_cur=rhs->arr; arr_cur; arr_cur=arr_cur->next) {
4382 if(arr_cur->long_val)
4383 *ios_base_iword(this, arr_cur->index) = arr_cur->long_val;
4384 if(arr_cur->ptr_val)
4385 *ios_base_pword(this, arr_cur->index) = arr_cur->ptr_val;
4387 this->stdstr = rhs->stdstr;
4388 this->fmtfl = rhs->fmtfl;
4389 this->prec = rhs->prec;
4390 this->wide = rhs->wide;
4391 locale_operator_assign(IOS_LOCALE(this), IOS_LOCALE(rhs));
4393 for(event_cur=rhs->calls; event_cur; event_cur=event_cur->next)
4394 ios_base_register_callback(this, event_cur->event_handler, event_cur->index);
4396 ios_base_Callfns(this, EVENT_copyfmt_event);
4397 ios_base_exceptions_set(this, rhs->except);
4400 return this;
4403 /* ??4ios_base@std@@QAEAAV01@ABV01@@Z */
4404 /* ??4ios_base@std@@QEAAAEAV01@AEBV01@@Z */
4405 DEFINE_THISCALL_WRAPPER(ios_base_assign, 8)
4406 ios_base* __thiscall ios_base_assign(ios_base *this, const ios_base *right)
4408 TRACE("(%p %p)\n", this, right);
4410 if(this != right) {
4411 this->state = right->state;
4412 ios_base_copyfmt(this, right);
4415 return this;
4418 /* ?fail@ios_base@std@@QBE_NXZ */
4419 /* ?fail@ios_base@std@@QEBA_NXZ */
4420 DEFINE_THISCALL_WRAPPER(ios_base_fail, 4)
4421 bool __thiscall ios_base_fail(const ios_base *this)
4423 TRACE("(%p)\n", this);
4424 return (this->state & (IOSTATE_failbit|IOSTATE_badbit)) != 0;
4427 /* ??7ios_base@std@@QBE_NXZ */
4428 /* ??7ios_base@std@@QEBA_NXZ */
4429 DEFINE_THISCALL_WRAPPER(ios_base_op_succ, 4)
4430 bool __thiscall ios_base_op_succ(const ios_base *this)
4432 TRACE("(%p)\n", this);
4433 return ios_base_fail(this);
4436 /* ??Bios_base@std@@QBEPAXXZ */
4437 /* ??Bios_base@std@@QEBAPEAXXZ */
4438 DEFINE_THISCALL_WRAPPER(ios_base_op_fail, 4)
4439 void* __thiscall ios_base_op_fail(const ios_base *this)
4441 TRACE("(%p)\n", this);
4442 return ios_base_fail(this) ? NULL : (void*)this;
4445 /* ??Bios_base@std@@QBA_NXZ */
4446 /* ??Bios_base@std@@QBE_NXZ */
4447 /* ??Bios_base@std@@QEBA_NXZ */
4448 DEFINE_THISCALL_WRAPPER(ios_base_operator_bool, 4)
4449 bool __thiscall ios_base_operator_bool(const ios_base *this)
4451 TRACE("(%p)\n", this);
4452 return (this->state & (IOSTATE_failbit|IOSTATE_badbit)) == 0;
4455 /* ?_Addstd@ios_base@std@@SAXPAV12@@Z */
4456 /* ?_Addstd@ios_base@std@@SAXPEAV12@@Z */
4457 void __cdecl ios_base_Addstd(ios_base *add)
4459 FIXME("(%p) stub\n", add);
4462 /* ?_Index_func@ios_base@std@@CAAAHXZ */
4463 /* ?_Index_func@ios_base@std@@CAAEAHXZ */
4464 int* __cdecl ios_base_Index_func(void)
4466 TRACE("\n");
4467 return &ios_base_Index;
4470 /* ?_Init@ios_base@std@@IAEXXZ */
4471 /* ?_Init@ios_base@std@@IEAAXXZ */
4472 DEFINE_THISCALL_WRAPPER(ios_base__Init, 4)
4473 void __thiscall ios_base__Init(ios_base *this)
4475 TRACE("(%p)\n", this);
4477 this->stdstr = 0;
4478 this->state = this->except = IOSTATE_goodbit;
4479 this->fmtfl = FMTFLAG_skipws | FMTFLAG_dec;
4480 this->prec = 6;
4481 this->wide = 0;
4482 this->arr = NULL;
4483 this->calls = NULL;
4484 locale_ctor(IOS_LOCALE(this));
4487 /* ?_Sync_func@ios_base@std@@CAAA_NXZ */
4488 /* ?_Sync_func@ios_base@std@@CAAEA_NXZ */
4489 bool* __cdecl ios_base_Sync_func(void)
4491 TRACE("\n");
4492 return &ios_base_Sync;
4495 /* ?bad@ios_base@std@@QBE_NXZ */
4496 /* ?bad@ios_base@std@@QEBA_NXZ */
4497 DEFINE_THISCALL_WRAPPER(ios_base_bad, 4)
4498 bool __thiscall ios_base_bad(const ios_base *this)
4500 TRACE("(%p)\n", this);
4501 return (this->state & IOSTATE_badbit) != 0;
4504 /* ?eof@ios_base@std@@QBE_NXZ */
4505 /* ?eof@ios_base@std@@QEBA_NXZ */
4506 DEFINE_THISCALL_WRAPPER(ios_base_eof, 4)
4507 bool __thiscall ios_base_eof(const ios_base *this)
4509 TRACE("(%p)\n", this);
4510 return (this->state & IOSTATE_eofbit) != 0;
4513 /* ?flags@ios_base@std@@QAEHH@Z */
4514 /* ?flags@ios_base@std@@QEAAHH@Z */
4515 DEFINE_THISCALL_WRAPPER(ios_base_flags_set, 8)
4516 IOSB_fmtflags __thiscall ios_base_flags_set(ios_base *this, IOSB_fmtflags flags)
4518 IOSB_fmtflags ret = this->fmtfl;
4520 TRACE("(%p %x)\n", this, flags);
4522 this->fmtfl = flags & FMTFLAG_mask;
4523 return ret;
4526 /* ?flags@ios_base@std@@QBEHXZ */
4527 /* ?flags@ios_base@std@@QEBAHXZ */
4528 DEFINE_THISCALL_WRAPPER(ios_base_flags_get, 4)
4529 IOSB_fmtflags __thiscall ios_base_flags_get(const ios_base *this)
4531 TRACE("(%p)\n", this);
4532 return this->fmtfl;
4535 /* ?getloc@ios_base@std@@QBE?AVlocale@2@XZ */
4536 /* ?getloc@ios_base@std@@QEBA?AVlocale@2@XZ */
4537 DEFINE_THISCALL_WRAPPER(ios_base_getloc, 8)
4538 locale* __thiscall ios_base_getloc(const ios_base *this, locale *ret)
4540 TRACE("(%p)\n", this);
4541 return locale_copy_ctor(ret, IOS_LOCALE(this));
4544 /* ?good@ios_base@std@@QBE_NXZ */
4545 /* ?good@ios_base@std@@QEBA_NXZ */
4546 DEFINE_THISCALL_WRAPPER(ios_base_good, 4)
4547 bool __thiscall ios_base_good(const ios_base *this)
4549 TRACE("(%p)\n", this);
4550 return this->state == IOSTATE_goodbit;
4553 /* ?imbue@ios_base@std@@QAE?AVlocale@2@ABV32@@Z */
4554 /* ?imbue@ios_base@std@@QEAA?AVlocale@2@AEBV32@@Z */
4555 DEFINE_THISCALL_WRAPPER(ios_base_imbue, 12)
4556 locale* __thiscall ios_base_imbue(ios_base *this, locale *ret, const locale *loc)
4558 TRACE("(%p %p)\n", this, loc);
4559 *ret = *IOS_LOCALE(this);
4560 locale_copy_ctor(IOS_LOCALE(this), loc);
4561 return ret;
4564 /* ?precision@ios_base@std@@QAEHH@Z */
4565 /* ?precision@ios_base@std@@QEAA_J_J@Z */
4566 DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 8)
4567 streamsize __thiscall ios_base_precision_set(ios_base *this, streamsize precision)
4569 streamsize ret = this->prec;
4571 TRACE("(%p %Id)\n", this, precision);
4573 this->prec = precision;
4574 return ret;
4577 /* ?precision@ios_base@std@@QBEHXZ */
4578 /* ?precision@ios_base@std@@QEBA_JXZ */
4579 DEFINE_THISCALL_WRAPPER(ios_base_precision_get, 4)
4580 streamsize __thiscall ios_base_precision_get(const ios_base *this)
4582 TRACE("(%p)\n", this);
4583 return this->prec;
4586 /* ?rdstate@ios_base@std@@QBEHXZ */
4587 /* ?rdstate@ios_base@std@@QEBAHXZ */
4588 DEFINE_THISCALL_WRAPPER(ios_base_rdstate, 4)
4589 IOSB_iostate __thiscall ios_base_rdstate(const ios_base *this)
4591 TRACE("(%p)\n", this);
4592 return this->state;
4595 /* ?setf@ios_base@std@@QAEHHH@Z */
4596 /* ?setf@ios_base@std@@QEAAHHH@Z */
4597 DEFINE_THISCALL_WRAPPER(ios_base_setf_mask, 12)
4598 IOSB_fmtflags __thiscall ios_base_setf_mask(ios_base *this, IOSB_fmtflags flags, IOSB_fmtflags mask)
4600 IOSB_fmtflags ret = this->fmtfl;
4602 TRACE("(%p %x %x)\n", this, flags, mask);
4604 this->fmtfl = (this->fmtfl & (~mask)) | (flags & mask & FMTFLAG_mask);
4605 return ret;
4608 /* ?setf@ios_base@std@@QAEHH@Z */
4609 /* ?setf@ios_base@std@@QEAAHH@Z */
4610 DEFINE_THISCALL_WRAPPER(ios_base_setf, 8)
4611 IOSB_fmtflags __thiscall ios_base_setf(ios_base *this, IOSB_fmtflags flags)
4613 IOSB_fmtflags ret = this->fmtfl;
4615 TRACE("(%p %x)\n", this, flags);
4617 this->fmtfl |= flags & FMTFLAG_mask;
4618 return ret;
4621 /* ?setstate@ios_base@std@@QAEXH_N@Z */
4622 /* ?setstate@ios_base@std@@QEAAXH_N@Z */
4623 DEFINE_THISCALL_WRAPPER(ios_base_setstate_reraise, 12)
4624 void __thiscall ios_base_setstate_reraise(ios_base *this, IOSB_iostate state, bool reraise)
4626 TRACE("(%p %x %x)\n", this, state, reraise);
4628 if(state != IOSTATE_goodbit)
4629 ios_base_clear_reraise(this, this->state | state, reraise);
4632 /* ?setstate@ios_base@std@@QAEXH@Z */
4633 /* ?setstate@ios_base@std@@QEAAXH@Z */
4634 DEFINE_THISCALL_WRAPPER(ios_base_setstate, 8)
4635 void __thiscall ios_base_setstate(ios_base *this, IOSB_iostate state)
4637 ios_base_setstate_reraise(this, state, FALSE);
4640 /* ?setstate@ios_base@std@@QAEXI@Z */
4641 /* ?setstate@ios_base@std@@QEAAXI@Z */
4642 DEFINE_THISCALL_WRAPPER(ios_base_setstate_unsigned, 8)
4643 void __thiscall ios_base_setstate_unsigned(ios_base *this, unsigned int state)
4645 ios_base_setstate_reraise(this, (IOSB_iostate)state, FALSE);
4648 /* ?sync_with_stdio@ios_base@std@@SA_N_N@Z */
4649 bool __cdecl ios_base_sync_with_stdio(bool sync)
4651 _Lockit lock;
4652 bool ret;
4654 TRACE("(%x)\n", sync);
4656 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
4657 ret = ios_base_Sync;
4658 ios_base_Sync = sync;
4659 _Lockit_dtor(&lock);
4660 return ret;
4663 /* ?unsetf@ios_base@std@@QAEXH@Z */
4664 /* ?unsetf@ios_base@std@@QEAAXH@Z */
4665 DEFINE_THISCALL_WRAPPER(ios_base_unsetf, 8)
4666 void __thiscall ios_base_unsetf(ios_base *this, IOSB_fmtflags flags)
4668 TRACE("(%p %x)\n", this, flags);
4669 this->fmtfl &= ~flags;
4672 /* ?width@ios_base@std@@QAEHH@Z */
4673 /* ?width@ios_base@std@@QEAA_J_J@Z */
4674 DEFINE_THISCALL_WRAPPER(ios_base_width_set, 8)
4675 streamsize __thiscall ios_base_width_set(ios_base *this, streamsize width)
4677 streamsize ret = this->wide;
4679 TRACE("(%p %Id)\n", this, width);
4681 this->wide = width;
4682 return ret;
4685 /* ?width@ios_base@std@@QBEHXZ */
4686 /* ?width@ios_base@std@@QEBA_JXZ */
4687 DEFINE_THISCALL_WRAPPER(ios_base_width_get, 4)
4688 streamsize __thiscall ios_base_width_get(ios_base *this)
4690 TRACE("(%p)\n", this);
4691 return this->wide;
4694 /* ?xalloc@ios_base@std@@SAHXZ */
4695 int __cdecl ios_base_xalloc(void)
4697 _Lockit lock;
4698 int ret;
4700 TRACE("\n");
4702 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
4703 ret = ios_base_Index++;
4704 _Lockit_dtor(&lock);
4705 return ret;
4708 /* ?swap@ios_base@std@@QAEXAAV12@@Z */
4709 /* ?swap@ios_base@std@@QEAAXAEAV12@@Z */
4710 DEFINE_THISCALL_WRAPPER(ios_base_swap, 8)
4711 void __thiscall ios_base_swap(ios_base *this, ios_base *r)
4713 ios_base tmp;
4715 TRACE("(%p %p)\n", this, r);
4717 if(this == r)
4718 return;
4720 tmp = *this;
4721 *this = *r;
4722 this->vtable = tmp.vtable;
4723 tmp.vtable = r->vtable;
4724 *r = tmp;
4727 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ */
4728 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ */
4729 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor, 4)
4730 basic_ios_char* __thiscall basic_ios_char_ctor(basic_ios_char *this)
4732 TRACE("(%p)\n", this);
4734 ios_base_ctor(&this->base);
4735 this->base.vtable = &basic_ios_char_vtable;
4736 return this;
4739 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IAEXPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
4740 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
4741 DEFINE_THISCALL_WRAPPER(basic_ios_char_init, 12)
4742 void __thiscall basic_ios_char_init(basic_ios_char *this, basic_streambuf_char *streambuf, bool isstd)
4744 TRACE("(%p %p %x)\n", this, streambuf, isstd);
4745 ios_base__Init(&this->base);
4746 this->strbuf = streambuf;
4747 this->stream = NULL;
4748 this->fillch = ' ';
4750 if(!streambuf)
4751 ios_base_setstate(&this->base, IOSTATE_badbit);
4753 if(isstd)
4754 FIXME("standard streams not handled yet\n");
4757 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
4758 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
4759 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor_streambuf, 8)
4760 basic_ios_char* __thiscall basic_ios_char_ctor_streambuf(basic_ios_char *this, basic_streambuf_char *strbuf)
4762 TRACE("(%p %p)\n", this, strbuf);
4764 basic_ios_char_ctor(this);
4765 basic_ios_char_init(this, strbuf, FALSE);
4766 return this;
4769 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ */
4770 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ */
4771 DEFINE_THISCALL_WRAPPER(basic_ios_char_dtor, 4)
4772 void __thiscall basic_ios_char_dtor(basic_ios_char *this)
4774 TRACE("(%p)\n", this);
4775 ios_base_dtor(&this->base);
4778 DEFINE_THISCALL_WRAPPER(basic_ios_char_vector_dtor, 8)
4779 basic_ios_char* __thiscall basic_ios_char_vector_dtor(basic_ios_char *this, unsigned int flags)
4781 TRACE("(%p %x)\n", this, flags);
4782 if(flags & 2) {
4783 /* we have an array, with the number of elements stored before the first object */
4784 INT_PTR i, *ptr = (INT_PTR *)this-1;
4786 for(i=*ptr-1; i>=0; i--)
4787 basic_ios_char_dtor(this+i);
4788 operator_delete(ptr);
4789 } else {
4790 basic_ios_char_dtor(this);
4791 if(flags & 1)
4792 operator_delete(this);
4795 return this;
4798 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
4799 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
4800 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear_reraise, 12)
4801 void __thiscall basic_ios_char_clear_reraise(basic_ios_char *this, IOSB_iostate state, bool reraise)
4803 TRACE("(%p %x %x)\n", this, state, reraise);
4804 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
4807 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
4808 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
4809 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear, 8)
4810 void __thiscall basic_ios_char_clear(basic_ios_char *this, unsigned int state)
4812 basic_ios_char_clear_reraise(this, (IOSB_iostate)state, FALSE);
4815 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEAAV12@ABV12@@Z */
4816 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEBV12@@Z */
4817 DEFINE_THISCALL_WRAPPER(basic_ios_char_copyfmt, 8)
4818 basic_ios_char* __thiscall basic_ios_char_copyfmt(basic_ios_char *this, basic_ios_char *copy)
4820 TRACE("(%p %p)\n", this, copy);
4821 if(this == copy)
4822 return this;
4824 this->stream = copy->stream;
4825 this->fillch = copy->fillch;
4826 ios_base_copyfmt(&this->base, &copy->base);
4827 return this;
4830 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEDD@Z */
4831 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAADD@Z */
4832 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_set, 8)
4833 char __thiscall basic_ios_char_fill_set(basic_ios_char *this, char fill)
4835 char ret = this->fillch;
4837 TRACE("(%p %c)\n", this, fill);
4839 this->fillch = fill;
4840 return ret;
4843 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ */
4844 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ */
4845 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_get, 4)
4846 char __thiscall basic_ios_char_fill_get(basic_ios_char *this)
4848 TRACE("(%p)\n", this);
4849 return this->fillch;
4852 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
4853 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
4854 DEFINE_THISCALL_WRAPPER(basic_ios_char_imbue, 12)
4855 locale *__thiscall basic_ios_char_imbue(basic_ios_char *this, locale *ret, const locale *loc)
4857 TRACE("(%p %p %p)\n", this, ret, loc);
4859 if(this->strbuf) {
4860 basic_streambuf_char_pubimbue(this->strbuf, ret, loc);
4861 locale_dtor(ret);
4864 return ios_base_imbue(&this->base, ret, loc);
4867 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDDD@Z */
4868 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADDD@Z */
4869 DEFINE_THISCALL_WRAPPER(basic_ios_char_narrow, 12)
4870 char __thiscall basic_ios_char_narrow(basic_ios_char *this, char ch, char def)
4872 TRACE("(%p %c %c)\n", this, ch, def);
4873 return ctype_char_narrow_ch(ctype_char_use_facet(IOS_LOCALE(this->strbuf)), ch, def);
4876 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PAV32@@Z */
4877 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAV32@@Z */
4878 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_set, 8)
4879 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_set(basic_ios_char *this, basic_streambuf_char *streambuf)
4881 basic_streambuf_char *ret = this->strbuf;
4883 TRACE("(%p %p)\n", this, streambuf);
4885 this->strbuf = streambuf;
4886 basic_ios_char_clear(this, IOSTATE_goodbit);
4887 return ret;
4890 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
4891 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
4892 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_get, 4)
4893 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_get(const basic_ios_char *this)
4895 TRACE("(%p)\n", this);
4896 return this->strbuf;
4899 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
4900 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
4901 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate_reraise, 12)
4902 void __thiscall basic_ios_char_setstate_reraise(basic_ios_char *this, IOSB_iostate state, bool reraise)
4904 TRACE("(%p %x %x)\n", this, state, reraise);
4906 if(state != IOSTATE_goodbit)
4907 basic_ios_char_clear_reraise(this, this->base.state | state, reraise);
4910 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
4911 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
4912 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate, 8)
4913 void __thiscall basic_ios_char_setstate(basic_ios_char *this, unsigned int state)
4915 basic_ios_char_setstate_reraise(this, (IOSB_iostate)state, FALSE);
4918 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@PAV32@@Z */
4919 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@PEAV32@@Z */
4920 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_set, 8)
4921 basic_ostream_char* __thiscall basic_ios_char_tie_set(basic_ios_char *this, basic_ostream_char *ostream)
4923 basic_ostream_char *ret = this->stream;
4925 TRACE("(%p %p)\n", this, ostream);
4927 this->stream = ostream;
4928 return ret;
4931 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
4932 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
4933 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_get, 4)
4934 basic_ostream_char* __thiscall basic_ios_char_tie_get(const basic_ios_char *this)
4936 TRACE("(%p)\n", this);
4937 return this->stream;
4940 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z */
4941 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z */
4942 DEFINE_THISCALL_WRAPPER(basic_ios_char_widen, 8)
4943 char __thiscall basic_ios_char_widen(basic_ios_char *this, char ch)
4945 TRACE("(%p %c)\n", this, ch);
4946 return ctype_char_widen_ch(ctype_char_use_facet(IOS_LOCALE(this->strbuf)), ch);
4949 /* ?swap@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */
4950 /* ?swap@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */
4951 DEFINE_THISCALL_WRAPPER(basic_ios_char_swap, 8)
4952 void __thiscall basic_ios_char_swap(basic_ios_char *this, basic_ios_char *r)
4954 void *swap_ptr;
4956 TRACE("(%p %p)\n", this, r);
4958 if(this == r)
4959 return;
4961 ios_base_swap(&this->base, &r->base);
4962 swap_ptr = this->stream;
4963 this->stream = r->stream;
4964 r->stream = swap_ptr;
4965 this->fillch ^= r->fillch;
4966 r->fillch ^= this->fillch;
4967 this->fillch ^= r->fillch;
4970 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
4971 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
4972 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor, 4)
4973 basic_ios_wchar* __thiscall basic_ios_wchar_ctor(basic_ios_wchar *this)
4975 TRACE("(%p)\n", this);
4977 ios_base_ctor(&this->base);
4978 this->base.vtable = &basic_ios_wchar_vtable;
4979 return this;
4982 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IAE@XZ */
4983 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IEAA@XZ */
4984 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor, 4)
4985 basic_ios_wchar* __thiscall basic_ios_short_ctor(basic_ios_wchar *this)
4987 basic_ios_wchar_ctor(this);
4988 this->base.vtable = &basic_ios_short_vtable;
4989 return this;
4992 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
4993 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
4994 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IAEXPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
4995 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
4996 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_init, 12)
4997 void __thiscall basic_ios_wchar_init(basic_ios_wchar *this, basic_streambuf_wchar *streambuf, bool isstd)
4999 TRACE("(%p %p %x)\n", this, streambuf, isstd);
5000 ios_base__Init(&this->base);
5001 this->strbuf = streambuf;
5002 this->stream = NULL;
5003 this->fillch = ' ';
5005 if(!streambuf)
5006 ios_base_setstate(&this->base, IOSTATE_badbit);
5008 if(isstd)
5009 FIXME("standard streams not handled yet\n");
5012 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
5013 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
5014 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor_streambuf, 8)
5015 basic_ios_wchar* __thiscall basic_ios_wchar_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
5017 TRACE("(%p %p)\n", this, strbuf);
5019 basic_ios_wchar_ctor(this);
5020 basic_ios_wchar_init(this, strbuf, FALSE);
5021 return this;
5024 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
5025 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
5026 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor_streambuf, 8)
5027 basic_ios_wchar* __thiscall basic_ios_short_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
5029 basic_ios_wchar_ctor_streambuf(this, strbuf);
5030 this->base.vtable = &basic_ios_short_vtable;
5031 return this;
5034 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
5035 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
5036 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UAE@XZ */
5037 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UEAA@XZ */
5038 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_dtor, 4)
5039 void __thiscall basic_ios_wchar_dtor(basic_ios_wchar *this)
5041 TRACE("(%p)\n", this);
5042 ios_base_dtor(&this->base);
5045 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_vector_dtor, 8)
5046 basic_ios_wchar* __thiscall basic_ios_wchar_vector_dtor(basic_ios_wchar *this, unsigned int flags)
5048 TRACE("(%p %x)\n", this, flags);
5049 if(flags & 2) {
5050 /* we have an array, with the number of elements stored before the first object */
5051 INT_PTR i, *ptr = (INT_PTR *)this-1;
5053 for(i=*ptr-1; i>=0; i--)
5054 basic_ios_wchar_dtor(this+i);
5055 operator_delete(ptr);
5056 } else {
5057 basic_ios_wchar_dtor(this);
5058 if(flags & 1)
5059 operator_delete(this);
5062 return this;
5065 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
5066 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
5067 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
5068 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
5069 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear_reraise, 12)
5070 void __thiscall basic_ios_wchar_clear_reraise(basic_ios_wchar *this, IOSB_iostate state, bool reraise)
5072 TRACE("(%p %x %x)\n", this, state, reraise);
5073 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
5076 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
5077 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
5078 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
5079 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
5080 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear, 8)
5081 void __thiscall basic_ios_wchar_clear(basic_ios_wchar *this, unsigned int state)
5083 basic_ios_wchar_clear_reraise(this, (IOSB_iostate)state, FALSE);
5086 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEAAV12@ABV12@@Z */
5087 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEBV12@@Z */
5088 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEAAV12@ABV12@@Z */
5089 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEBV12@@Z */
5090 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_copyfmt, 8)
5091 basic_ios_wchar* __thiscall basic_ios_wchar_copyfmt(basic_ios_wchar *this, basic_ios_wchar *copy)
5093 TRACE("(%p %p)\n", this, copy);
5094 if(this == copy)
5095 return this;
5097 this->stream = copy->stream;
5098 this->fillch = copy->fillch;
5099 ios_base_copyfmt(&this->base, &copy->base);
5100 return this;
5103 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE_W_W@Z */
5104 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA_W_W@Z */
5105 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEGG@Z */
5106 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
5107 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_set, 8)
5108 wchar_t __thiscall basic_ios_wchar_fill_set(basic_ios_wchar *this, wchar_t fill)
5110 wchar_t ret = this->fillch;
5112 TRACE("(%p %c)\n", this, fill);
5114 this->fillch = fill;
5115 return ret;
5118 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WXZ */
5119 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WXZ */
5120 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGXZ */
5121 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGXZ */
5122 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_get, 4)
5123 wchar_t __thiscall basic_ios_wchar_fill_get(basic_ios_wchar *this)
5125 TRACE("(%p)\n", this);
5126 return this->fillch;
5129 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
5130 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
5131 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
5132 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
5133 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_imbue, 12)
5134 locale *__thiscall basic_ios_wchar_imbue(basic_ios_wchar *this, locale *ret, const locale *loc)
5136 TRACE("(%p %p %p)\n", this, ret, loc);
5138 if(this->strbuf) {
5139 basic_streambuf_wchar_pubimbue(this->strbuf, ret, loc);
5140 locale_dtor(ret);
5143 return ios_base_imbue(&this->base, ret, loc);
5146 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBED_WD@Z */
5147 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAD_WD@Z */
5148 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEDGD@Z */
5149 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBADGD@Z */
5150 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_narrow, 12)
5151 char __thiscall basic_ios_wchar_narrow(basic_ios_wchar *this, wchar_t ch, char def)
5153 TRACE("(%p %c %c)\n", this, ch, def);
5154 return ctype_wchar_narrow_ch(ctype_wchar_use_facet(IOS_LOCALE(this->strbuf)), ch, def);
5157 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
5158 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
5159 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAV32@@Z */
5160 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAV32@@Z */
5161 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_set, 8)
5162 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_set(basic_ios_wchar *this, basic_streambuf_wchar *streambuf)
5164 basic_streambuf_wchar *ret = this->strbuf;
5166 TRACE("(%p %p)\n", this, streambuf);
5168 this->strbuf = streambuf;
5169 basic_ios_wchar_clear(this, IOSTATE_goodbit);
5170 return ret;
5173 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
5174 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
5175 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
5176 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
5177 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_get, 4)
5178 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_get(const basic_ios_wchar *this)
5180 TRACE("(%p)\n", this);
5181 return this->strbuf;
5184 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
5185 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
5186 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
5187 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
5188 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate_reraise, 12)
5189 void __thiscall basic_ios_wchar_setstate_reraise(basic_ios_wchar *this, IOSB_iostate state, bool reraise)
5191 TRACE("(%p %x %x)\n", this, state, reraise);
5193 if(state != IOSTATE_goodbit)
5194 basic_ios_wchar_clear_reraise(this, this->base.state | state, reraise);
5197 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
5198 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
5199 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
5200 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
5201 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate, 8)
5202 void __thiscall basic_ios_wchar_setstate(basic_ios_wchar *this, IOSB_iostate state)
5204 basic_ios_wchar_setstate_reraise(this, state, FALSE);
5207 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
5208 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
5209 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@PAV32@@Z */
5210 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@PEAV32@@Z */
5211 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_set, 8)
5212 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_set(basic_ios_wchar *this, basic_ostream_wchar *ostream)
5214 basic_ostream_wchar *ret = this->stream;
5216 TRACE("(%p %p)\n", this, ostream);
5218 this->stream = ostream;
5219 return ret;
5222 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
5223 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
5224 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
5225 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
5226 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_get, 4)
5227 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_get(const basic_ios_wchar *this)
5229 TRACE("(%p)\n", this);
5230 return this->stream;
5233 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WD@Z */
5234 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WD@Z */
5235 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGD@Z */
5236 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGD@Z */
5237 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_widen, 8)
5238 wchar_t __thiscall basic_ios_wchar_widen(basic_ios_wchar *this, char ch)
5240 TRACE("(%p %c)\n", this, ch);
5241 return ctype_wchar_widen_ch(ctype_wchar_use_facet(IOS_LOCALE(this->strbuf)), ch);
5244 /* ?swap@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */
5245 /* ?swap@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */
5246 /* ?swap@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXAAV12@@Z */
5247 /* ?swap@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXAEAV12@@Z */
5248 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_swap, 8)
5249 void __thiscall basic_ios_wchar_swap(basic_ios_wchar *this, basic_ios_wchar *r)
5251 void *swap_ptr;
5253 TRACE("(%p %p)\n", this, r);
5255 if(this == r)
5256 return;
5258 ios_base_swap(&this->base, &r->base);
5259 swap_ptr = this->stream;
5260 this->stream = r->stream;
5261 r->stream = swap_ptr;
5262 this->fillch ^= r->fillch;
5263 r->fillch ^= this->fillch;
5264 this->fillch ^= r->fillch;
5267 /* Caution: basic_ostream uses virtual inheritance.
5268 * All constructors have additional parameter that says if base class should be initialized.
5269 * Base class needs to be accessed using vbtable.
5271 static inline basic_ios_char* basic_ostream_char_get_basic_ios(basic_ostream_char *this)
5273 return (basic_ios_char*)((char*)this+this->vbtable[1]);
5276 static inline basic_ios_char* basic_ostream_char_to_basic_ios(basic_ostream_char *ptr)
5278 return (basic_ios_char*)((char*)ptr+basic_ostream_char_vbtable[1]);
5281 static inline basic_ostream_char* basic_ostream_char_from_basic_ios(basic_ios_char *ptr)
5283 return (basic_ostream_char*)((char*)ptr-basic_ostream_char_vbtable[1]);
5286 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
5287 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
5288 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor, 20)
5289 basic_ostream_char* __thiscall basic_ostream_char_ctor(basic_ostream_char *this,
5290 basic_streambuf_char *strbuf, bool isstd, bool init, bool virt_init)
5292 basic_ios_char *base;
5294 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, init, virt_init);
5296 if(virt_init) {
5297 this->vbtable = basic_ostream_char_vbtable;
5298 base = basic_ostream_char_get_basic_ios(this);
5299 basic_ios_char_ctor(base);
5300 }else {
5301 base = basic_ostream_char_get_basic_ios(this);
5304 base->base.vtable = &basic_ostream_char_vtable;
5305 if(init)
5306 basic_ios_char_init(base, strbuf, isstd);
5307 return this;
5310 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
5311 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
5312 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor_uninitialized, 12)
5313 basic_ostream_char* __thiscall basic_ostream_char_ctor_uninitialized(basic_ostream_char *this,
5314 int uninitialized, bool virt_init)
5316 basic_ios_char *base;
5318 TRACE("(%p %d)\n", this, uninitialized);
5320 if(virt_init) {
5321 this->vbtable = basic_ostream_char_vbtable;
5322 base = basic_ostream_char_get_basic_ios(this);
5323 basic_ios_char_ctor(base);
5324 }else {
5325 base = basic_ostream_char_get_basic_ios(this);
5328 base->base.vtable = &basic_ostream_char_vtable;
5329 ios_base_Addstd(&base->base);
5330 return this;
5333 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
5334 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
5335 DEFINE_THISCALL_WRAPPER(basic_ostream_char_dtor, 4)
5336 void __thiscall basic_ostream_char_dtor(basic_ios_char *base)
5338 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
5340 /* don't destroy virtual base here */
5341 TRACE("(%p)\n", this);
5344 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
5345 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
5346 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vbase_dtor, 4)
5347 void __thiscall basic_ostream_char_vbase_dtor(basic_ostream_char *this)
5349 TRACE("(%p)\n", this);
5350 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(this));
5351 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(this));
5354 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vector_dtor, 8)
5355 basic_ostream_char* __thiscall basic_ostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
5357 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
5359 TRACE("(%p %x)\n", this, flags);
5361 if(flags & 2) {
5362 /* we have an array, with the number of elements stored before the first object */
5363 INT_PTR i, *ptr = (INT_PTR *)this-1;
5365 for(i=*ptr-1; i>=0; i--)
5366 basic_ostream_char_vbase_dtor(this+i);
5367 operator_delete(ptr);
5368 } else {
5369 basic_ostream_char_vbase_dtor(this);
5370 if(flags & 1)
5371 operator_delete(this);
5374 return this;
5377 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
5378 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
5379 DEFINE_THISCALL_WRAPPER(basic_ostream_char_flush, 4)
5380 basic_ostream_char* __thiscall basic_ostream_char_flush(basic_ostream_char *this)
5382 /* this function is not matching C++ specification */
5383 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5385 TRACE("(%p)\n", this);
5387 if(basic_ios_char_rdbuf_get(base) && ios_base_good(&base->base)
5388 && basic_streambuf_char_pubsync(basic_ios_char_rdbuf_get(base))==-1)
5389 basic_ios_char_setstate(base, IOSTATE_badbit);
5390 return this;
5393 /* ?flush@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
5394 /* ?flush@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
5395 basic_ostream_char* __cdecl flush_ostream_char(basic_ostream_char *ostream)
5397 return basic_ostream_char_flush(ostream);
5400 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
5401 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
5402 DEFINE_THISCALL_WRAPPER(basic_ostream_char__Osfx, 4)
5403 void __thiscall basic_ostream_char__Osfx(basic_ostream_char *this)
5405 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5407 TRACE("(%p)\n", this);
5409 if(base->base.fmtfl & FMTFLAG_unitbuf)
5410 basic_ostream_char_flush(this);
5413 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
5414 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
5415 DEFINE_THISCALL_WRAPPER(basic_ostream_char_osfx, 4)
5416 void __thiscall basic_ostream_char_osfx(basic_ostream_char *this)
5418 TRACE("(%p)\n", this);
5419 basic_ostream_char__Osfx(this);
5422 static BOOL basic_ostream_char_sentry_create(basic_ostream_char *ostr)
5424 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5426 if(basic_ios_char_rdbuf_get(base))
5427 call_basic_streambuf_char__Lock(base->strbuf);
5429 if(ios_base_good(&base->base) && base->stream)
5430 basic_ostream_char_flush(base->stream);
5432 return ios_base_good(&base->base);
5435 static void basic_ostream_char_sentry_destroy(basic_ostream_char *ostr)
5437 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5439 if(ios_base_good(&base->base) && !__uncaught_exception())
5440 basic_ostream_char_osfx(ostr);
5442 if(basic_ios_char_rdbuf_get(base))
5443 call_basic_streambuf_char__Unlock(base->strbuf);
5446 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE_NXZ */
5447 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA_NXZ */
5448 DEFINE_THISCALL_WRAPPER(basic_ostream_char_opfx, 4)
5449 bool __thiscall basic_ostream_char_opfx(basic_ostream_char *this)
5451 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5453 TRACE("(%p)\n", this);
5455 if(ios_base_good(&base->base) && base->stream)
5456 basic_ostream_char_flush(base->stream);
5457 return ios_base_good(&base->base);
5460 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
5461 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
5462 DEFINE_THISCALL_WRAPPER(basic_ostream_char_put, 8)
5463 basic_ostream_char* __thiscall basic_ostream_char_put(basic_ostream_char *this, char ch)
5465 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5467 TRACE("(%p %c)\n", this, ch);
5469 if(!basic_ostream_char_sentry_create(this)
5470 || basic_streambuf_char_sputc(base->strbuf, ch)==EOF) {
5471 basic_ostream_char_sentry_destroy(this);
5472 basic_ios_char_setstate(base, IOSTATE_badbit);
5473 return this;
5476 basic_ostream_char_sentry_destroy(this);
5477 return this;
5480 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
5481 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
5482 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 12)
5483 basic_ostream_char* __thiscall basic_ostream_char_seekp(basic_ostream_char *this, streamoff off, int way)
5485 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5487 TRACE("(%p %Id %d)\n", this, off, way);
5489 if(!ios_base_fail(&base->base)) {
5490 fpos_int seek;
5492 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
5493 &seek, off, way, OPENMODE_out);
5494 if(seek.off==-1 && seek.pos==0 && seek.state==0)
5495 basic_ios_char_setstate(base, IOSTATE_failbit);
5497 return this;
5500 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
5501 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
5502 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp_fpos, 28)
5503 basic_ostream_char* __thiscall basic_ostream_char_seekp_fpos(basic_ostream_char *this, fpos_int pos)
5505 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5507 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
5509 if(!ios_base_fail(&base->base)) {
5510 fpos_int seek;
5512 basic_streambuf_char_pubseekpos(basic_ios_char_rdbuf_get(base),
5513 &seek, pos, OPENMODE_out);
5514 if(seek.off==-1 && seek.pos==0 && seek.state==0)
5515 basic_ios_char_setstate(base, IOSTATE_failbit);
5517 return this;
5520 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
5521 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
5522 DEFINE_THISCALL_WRAPPER(basic_ostream_char_tellp, 8)
5523 fpos_int* __thiscall basic_ostream_char_tellp(basic_ostream_char *this, fpos_int *ret)
5525 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5527 TRACE("(%p)\n", this);
5529 if(!ios_base_fail(&base->base)) {
5530 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
5531 ret, 0, SEEKDIR_cur, OPENMODE_out);
5532 }else {
5533 ret->off = -1;
5534 ret->pos = 0;
5535 ret->state = 0;
5537 return ret;
5540 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@PBDH@Z */
5541 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEBD_J@Z */
5542 DEFINE_THISCALL_WRAPPER(basic_ostream_char_write, 12)
5543 basic_ostream_char* __thiscall basic_ostream_char_write(basic_ostream_char *this, const char *str, streamsize count)
5545 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5547 TRACE("(%p %s %Id)\n", this, debugstr_a(str), count);
5549 if(!basic_ostream_char_sentry_create(this)
5550 || basic_streambuf_char_sputn(base->strbuf, str, count)!=count) {
5551 basic_ostream_char_sentry_destroy(this);
5552 basic_ios_char_setstate(base, IOSTATE_badbit);
5553 return this;
5556 basic_ostream_char_sentry_destroy(this);
5557 return this;
5560 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@F@Z */
5561 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@F@Z */
5562 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_short, 8)
5563 basic_ostream_char* __thiscall basic_ostream_char_print_short(basic_ostream_char *this, short val)
5565 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5566 int state = IOSTATE_goodbit;
5568 TRACE("(%p %d)\n", this, val);
5570 if(basic_ostream_char_sentry_create(this)) {
5571 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5572 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
5573 ostreambuf_iterator_char dest;
5575 memset(&dest, 0, sizeof(dest));
5576 dest.strbuf = strbuf;
5577 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base),
5578 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
5579 ? (LONG)((unsigned short)val) : (LONG)val);
5581 basic_ostream_char_sentry_destroy(this);
5583 basic_ios_char_setstate(base, state);
5584 return this;
5587 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@G@Z */
5588 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@G@Z */
5589 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ushort, 8)
5590 basic_ostream_char* __thiscall basic_ostream_char_print_ushort(basic_ostream_char *this, unsigned short val)
5592 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5593 int state = IOSTATE_goodbit;
5595 TRACE("(%p %u)\n", this, val);
5597 if(basic_ostream_char_sentry_create(this)) {
5598 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5599 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
5600 ostreambuf_iterator_char dest;
5602 memset(&dest, 0, sizeof(dest));
5603 dest.strbuf = strbuf;
5604 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5606 basic_ostream_char_sentry_destroy(this);
5608 basic_ios_char_setstate(base, state);
5609 return this;
5612 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z */
5613 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z */
5614 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@J@Z */
5615 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@J@Z */
5616 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int, 8)
5617 basic_ostream_char* __thiscall basic_ostream_char_print_int(basic_ostream_char *this, int val)
5619 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5620 int state = IOSTATE_goodbit;
5622 TRACE("(%p %d)\n", this, val);
5624 if(basic_ostream_char_sentry_create(this)) {
5625 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5626 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
5627 ostreambuf_iterator_char dest;
5629 memset(&dest, 0, sizeof(dest));
5630 dest.strbuf = strbuf;
5631 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5633 basic_ostream_char_sentry_destroy(this);
5635 basic_ios_char_setstate(base, state);
5636 return this;
5639 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@I@Z */
5640 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@I@Z */
5641 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@K@Z */
5642 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z */
5643 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint, 8)
5644 basic_ostream_char* __thiscall basic_ostream_char_print_uint(basic_ostream_char *this, unsigned int val)
5646 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5647 int state = IOSTATE_goodbit;
5649 TRACE("(%p %u)\n", this, val);
5651 if(basic_ostream_char_sentry_create(this)) {
5652 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5653 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
5654 ostreambuf_iterator_char dest;
5656 memset(&dest, 0, sizeof(dest));
5657 dest.strbuf = strbuf;
5658 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5660 basic_ostream_char_sentry_destroy(this);
5662 basic_ios_char_setstate(base, state);
5663 return this;
5666 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@M@Z */
5667 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@M@Z */
5668 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_float, 8)
5669 basic_ostream_char* __thiscall basic_ostream_char_print_float(basic_ostream_char *this, float val)
5671 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5672 int state = IOSTATE_goodbit;
5674 TRACE("(%p %f)\n", this, val);
5676 if(basic_ostream_char_sentry_create(this)) {
5677 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5678 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
5679 ostreambuf_iterator_char dest;
5681 memset(&dest, 0, sizeof(dest));
5682 dest.strbuf = strbuf;
5683 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5685 basic_ostream_char_sentry_destroy(this);
5687 basic_ios_char_setstate(base, state);
5688 return this;
5691 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@N@Z */
5692 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@N@Z */
5693 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_double, 12)
5694 basic_ostream_char* __thiscall basic_ostream_char_print_double(basic_ostream_char *this, double val)
5696 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5697 int state = IOSTATE_goodbit;
5699 TRACE("(%p %lf)\n", this, val);
5701 if(basic_ostream_char_sentry_create(this)) {
5702 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5703 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
5704 ostreambuf_iterator_char dest;
5706 memset(&dest, 0, sizeof(dest));
5707 dest.strbuf = strbuf;
5708 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5710 basic_ostream_char_sentry_destroy(this);
5712 basic_ios_char_setstate(base, state);
5713 return this;
5716 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@O@Z */
5717 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@O@Z */
5718 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ldouble, 12)
5719 basic_ostream_char* __thiscall basic_ostream_char_print_ldouble(basic_ostream_char *this, double val)
5721 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5722 int state = IOSTATE_goodbit;
5724 TRACE("(%p %lf)\n", this, val);
5726 if(basic_ostream_char_sentry_create(this)) {
5727 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5728 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
5729 ostreambuf_iterator_char dest;
5731 memset(&dest, 0, sizeof(dest));
5732 dest.strbuf = strbuf;
5733 num_put_char_put_ldouble(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5735 basic_ostream_char_sentry_destroy(this);
5737 basic_ios_char_setstate(base, state);
5738 return this;
5741 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
5742 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
5743 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_streambuf, 8)
5744 basic_ostream_char* __thiscall basic_ostream_char_print_streambuf(basic_ostream_char *this, basic_streambuf_char *val)
5746 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5747 IOSB_iostate state = IOSTATE_badbit;
5748 int c = '\n';
5750 TRACE("(%p %p)\n", this, val);
5752 if(basic_ostream_char_sentry_create(this)) {
5753 for(c = basic_streambuf_char_sgetc(val); c!=EOF;
5754 c = basic_streambuf_char_snextc(val)) {
5755 state = IOSTATE_goodbit;
5757 if(basic_streambuf_char_sputc(base->strbuf, c) == EOF) {
5758 state = IOSTATE_badbit;
5759 break;
5762 }else {
5763 state = IOSTATE_badbit;
5765 basic_ostream_char_sentry_destroy(this);
5767 ios_base_width_set(&base->base, 0);
5768 basic_ios_char_setstate(base, state);
5769 return this;
5772 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PBX@Z */
5773 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEBX@Z */
5774 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ptr, 8)
5775 basic_ostream_char* __thiscall basic_ostream_char_print_ptr(basic_ostream_char *this, const void *val)
5777 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5778 int state = IOSTATE_goodbit;
5780 TRACE("(%p %p)\n", this, val);
5782 if(basic_ostream_char_sentry_create(this)) {
5783 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5784 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
5785 ostreambuf_iterator_char dest;
5787 memset(&dest, 0, sizeof(dest));
5788 dest.strbuf = strbuf;
5789 num_put_char_put_ptr(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5791 basic_ostream_char_sentry_destroy(this);
5793 basic_ios_char_setstate(base, state);
5794 return this;
5797 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_J@Z */
5798 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_J@Z */
5799 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int64, 12)
5800 basic_ostream_char* __thiscall basic_ostream_char_print_int64(basic_ostream_char *this, __int64 val)
5802 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5803 int state = IOSTATE_goodbit;
5805 TRACE("(%p)\n", this);
5807 if(basic_ostream_char_sentry_create(this)) {
5808 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5809 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
5810 ostreambuf_iterator_char dest;
5812 memset(&dest, 0, sizeof(dest));
5813 dest.strbuf = strbuf;
5814 num_put_char_put_int64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5816 basic_ostream_char_sentry_destroy(this);
5818 basic_ios_char_setstate(base, state);
5819 return this;
5822 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_K@Z */
5823 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z */
5824 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint64, 12)
5825 basic_ostream_char* __thiscall basic_ostream_char_print_uint64(basic_ostream_char *this, unsigned __int64 val)
5827 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5828 int state = IOSTATE_goodbit;
5830 TRACE("(%p)\n", this);
5832 if(basic_ostream_char_sentry_create(this)) {
5833 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5834 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
5835 ostreambuf_iterator_char dest;
5837 memset(&dest, 0, sizeof(dest));
5838 dest.strbuf = strbuf;
5839 num_put_char_put_uint64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5841 basic_ostream_char_sentry_destroy(this);
5843 basic_ios_char_setstate(base, state);
5844 return this;
5847 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_N@Z */
5848 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_N@Z */
5849 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_bool, 8)
5850 basic_ostream_char* __thiscall basic_ostream_char_print_bool(basic_ostream_char *this, bool val)
5852 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5853 int state = IOSTATE_goodbit;
5855 TRACE("(%p %x)\n", this, val);
5857 if(basic_ostream_char_sentry_create(this)) {
5858 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5859 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
5860 ostreambuf_iterator_char dest;
5862 memset(&dest, 0, sizeof(dest));
5863 dest.strbuf = strbuf;
5864 num_put_char_put_bool(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5866 basic_ostream_char_sentry_destroy(this);
5868 basic_ios_char_setstate(base, state);
5869 return this;
5872 /* ?ends@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
5873 /* ?ends@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
5874 basic_ostream_char* __cdecl basic_ostream_char_ends(basic_ostream_char *ostr)
5876 TRACE("(%p)\n", ostr);
5878 basic_ostream_char_put(ostr, 0);
5879 return ostr;
5882 /* ?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
5883 /* ?endl@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
5884 basic_ostream_char* __cdecl basic_ostream_char_endl(basic_ostream_char *ostr)
5886 TRACE("(%p)\n", ostr);
5888 basic_ostream_char_put(ostr, '\n');
5889 basic_ostream_char_flush(ostr);
5890 return ostr;
5893 /* ??$?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 */
5894 /* ??$?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 */
5895 basic_ostream_char* __cdecl basic_ostream_char_print_bstr(basic_ostream_char *ostr, const basic_string_char *str)
5897 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5898 IOSB_iostate state = IOSTATE_goodbit;
5900 TRACE("(%p %p)\n", ostr, str);
5902 if(basic_ostream_char_sentry_create(ostr)) {
5903 size_t len = MSVCP_basic_string_char_length(str);
5904 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
5906 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
5907 for(; pad!=0; pad--) {
5908 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5909 state = IOSTATE_badbit;
5910 break;
5915 if(state == IOSTATE_goodbit) {
5916 if(basic_streambuf_char_sputn(base->strbuf, MSVCP_basic_string_char_c_str(str), len) != len)
5917 state = IOSTATE_badbit;
5920 if(state == IOSTATE_goodbit) {
5921 for(; pad!=0; pad--) {
5922 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5923 state = IOSTATE_badbit;
5924 break;
5929 base->base.wide = 0;
5930 }else {
5931 state = IOSTATE_badbit;
5933 basic_ostream_char_sentry_destroy(ostr);
5935 basic_ios_char_setstate(base, state);
5936 return ostr;
5939 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@C@Z */
5940 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@C@Z */
5941 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z */
5942 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z */
5943 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@E@Z */
5944 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@E@Z */
5945 basic_ostream_char* __cdecl basic_ostream_char_print_ch(basic_ostream_char *ostr, char ch)
5947 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5948 IOSB_iostate state = IOSTATE_goodbit;
5950 TRACE("(%p %d)\n", ostr, ch);
5952 if(basic_ostream_char_sentry_create(ostr)) {
5953 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
5955 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
5956 for(; pad!=0; pad--) {
5957 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5958 state = IOSTATE_badbit;
5959 break;
5964 if(state == IOSTATE_goodbit) {
5965 if(basic_streambuf_char_sputc(base->strbuf, ch) == EOF)
5966 state = IOSTATE_badbit;
5969 if(state == IOSTATE_goodbit) {
5970 for(; pad!=0; pad--) {
5971 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5972 state = IOSTATE_badbit;
5973 break;
5978 base->base.wide = 0;
5979 }else {
5980 state = IOSTATE_badbit;
5982 basic_ostream_char_sentry_destroy(ostr);
5984 basic_ios_char_setstate(base, state);
5985 return ostr;
5988 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBC@Z */
5989 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBC@Z */
5990 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z */
5991 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z */
5992 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBE@Z */
5993 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBE@Z */
5994 basic_ostream_char* __cdecl basic_ostream_char_print_str(basic_ostream_char *ostr, const char *str)
5996 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5997 IOSB_iostate state = IOSTATE_goodbit;
5999 TRACE("(%p %s)\n", ostr, str);
6001 if(basic_ostream_char_sentry_create(ostr)) {
6002 size_t len = strlen(str);
6003 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
6005 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6006 for(; pad!=0; pad--) {
6007 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6008 state = IOSTATE_badbit;
6009 break;
6014 if(state == IOSTATE_goodbit) {
6015 if(basic_streambuf_char_sputn(base->strbuf, str, len) != len)
6016 state = IOSTATE_badbit;
6019 if(state == IOSTATE_goodbit) {
6020 for(; pad!=0; pad--) {
6021 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6022 state = IOSTATE_badbit;
6023 break;
6028 base->base.wide = 0;
6029 }else {
6030 state = IOSTATE_badbit;
6032 basic_ostream_char_sentry_destroy(ostr);
6034 basic_ios_char_setstate(base, state);
6035 return ostr;
6038 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
6039 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
6040 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func, 8)
6041 basic_ostream_char* __thiscall basic_ostream_char_print_func(basic_ostream_char *this,
6042 basic_ostream_char* (__cdecl *pfunc)(basic_ostream_char*))
6044 TRACE("(%p %p)\n", this, pfunc);
6045 pfunc(this);
6046 return this;
6049 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
6050 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
6051 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_basic_ios, 8)
6052 basic_ostream_char* __thiscall basic_ostream_char_print_func_basic_ios(basic_ostream_char *this,
6053 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
6055 TRACE("(%p %p)\n", this, pfunc);
6056 pfunc(basic_ostream_char_get_basic_ios(this));
6057 return this;
6060 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
6061 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
6062 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_ios_base, 8)
6063 basic_ostream_char* __thiscall basic_ostream_char_print_func_ios_base(
6064 basic_ostream_char *this, ios_base* (__cdecl *pfunc)(ios_base*))
6066 TRACE("(%p %p)\n", this, pfunc);
6067 pfunc(&basic_ostream_char_get_basic_ios(this)->base);
6068 return this;
6071 /* ?swap@?$basic_ostream@DU?$char_traits@D@std@@@std@@IAEXAAV12@@Z */
6072 /* ?swap@?$basic_ostream@DU?$char_traits@D@std@@@std@@IEAAXAEAV12@@Z */
6073 DEFINE_THISCALL_WRAPPER(basic_ostream_char_swap, 8)
6074 void __thiscall basic_ostream_char_swap(basic_ostream_char *this, basic_ostream_char *r)
6076 TRACE("(%p %p)\n", this, r);
6078 if(this == r)
6079 return;
6081 basic_ios_char_swap(basic_ostream_char_get_basic_ios(this),
6082 basic_ostream_char_get_basic_ios(r));
6085 /* Caution: basic_ostream uses virtual inheritance. */
6086 static inline basic_ios_wchar* basic_ostream_short_get_basic_ios(basic_ostream_wchar *this)
6088 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
6091 static inline basic_ios_wchar* basic_ostream_short_to_basic_ios(basic_ostream_wchar *ptr)
6093 return (basic_ios_wchar*)((char*)ptr+basic_ostream_short_vbtable[1]);
6096 static inline basic_ostream_wchar* basic_ostream_short_from_basic_ios(basic_ios_wchar *ptr)
6098 return (basic_ostream_wchar*)((char*)ptr-basic_ostream_short_vbtable[1]);
6101 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
6102 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
6103 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor, 20)
6104 basic_ostream_wchar* __thiscall basic_ostream_short_ctor(basic_ostream_wchar *this,
6105 basic_streambuf_wchar *strbuf, bool isstd, bool init, bool virt_init)
6107 basic_ios_wchar *base;
6109 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
6111 if(virt_init) {
6112 this->vbtable = basic_ostream_short_vbtable;
6113 base = basic_ostream_short_get_basic_ios(this);
6114 basic_ios_wchar_ctor(base);
6115 }else {
6116 base = basic_ostream_short_get_basic_ios(this);
6119 base->base.vtable = &basic_ostream_short_vtable;
6120 if(init)
6121 basic_ios_wchar_init(base, strbuf, isstd);
6122 return this;
6125 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
6126 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
6127 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor_uninitialized, 12)
6128 basic_ostream_wchar* __thiscall basic_ostream_short_ctor_uninitialized(basic_ostream_wchar *this,
6129 int uninitialized, bool virt_init)
6131 basic_ios_wchar *base;
6133 TRACE("(%p %d)\n", this, uninitialized);
6135 if(virt_init) {
6136 this->vbtable = basic_ostream_short_vbtable;
6137 base = basic_ostream_short_get_basic_ios(this);
6138 basic_ios_wchar_ctor(base);
6139 }else {
6140 base = basic_ostream_short_get_basic_ios(this);
6143 base->base.vtable = &basic_ostream_short_vtable;
6144 ios_base_Addstd(&base->base);
6145 return this;
6148 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
6149 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
6150 DEFINE_THISCALL_WRAPPER(basic_ostream_short_dtor, 4)
6151 void __thiscall basic_ostream_short_dtor(basic_ios_wchar *base)
6153 basic_ostream_wchar *this = basic_ostream_short_from_basic_ios(base);
6155 /* don't destroy virtual base here */
6156 TRACE("(%p)\n", this);
6159 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
6160 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
6161 DEFINE_THISCALL_WRAPPER(basic_ostream_short_vbase_dtor, 4)
6162 void __thiscall basic_ostream_short_vbase_dtor(basic_ostream_wchar *this)
6164 TRACE("(%p)\n", this);
6165 basic_ostream_short_dtor(basic_ostream_short_to_basic_ios(this));
6166 basic_ios_wchar_dtor(basic_ostream_short_get_basic_ios(this));
6169 DEFINE_THISCALL_WRAPPER(basic_ostream_short_vector_dtor, 8)
6170 basic_ostream_wchar* __thiscall basic_ostream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
6172 basic_ostream_wchar *this = basic_ostream_short_from_basic_ios(base);
6174 TRACE("(%p %x)\n", this, flags);
6176 if(flags & 2) {
6177 /* we have an array, with the number of elements stored before the first object */
6178 INT_PTR i, *ptr = (INT_PTR *)this-1;
6180 for(i=*ptr-1; i>=0; i--)
6181 basic_ostream_short_vbase_dtor(this+i);
6182 operator_delete(ptr);
6183 } else {
6184 basic_ostream_short_vbase_dtor(this);
6185 if(flags & 1)
6186 operator_delete(this);
6189 return this;
6192 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
6193 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
6194 DEFINE_THISCALL_WRAPPER(basic_ostream_short_flush, 4)
6195 basic_ostream_wchar* __thiscall basic_ostream_short_flush(basic_ostream_wchar *this)
6197 /* this function is not matching C++ specification */
6198 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6200 TRACE("(%p)\n", this);
6202 if(basic_ios_wchar_rdbuf_get(base) && ios_base_good(&base->base)
6203 && basic_streambuf_wchar_pubsync(basic_ios_wchar_rdbuf_get(base))==-1)
6204 basic_ios_wchar_setstate(base, IOSTATE_badbit);
6205 return this;
6208 /* ?flush@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
6209 /* ?flush@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
6210 basic_ostream_wchar* __cdecl flush_ostream_short(basic_ostream_wchar *ostream)
6212 return basic_ostream_short_flush(ostream);
6215 /* ?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
6216 /* ?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
6217 DEFINE_THISCALL_WRAPPER(basic_ostream_short__Osfx, 4)
6218 void __thiscall basic_ostream_short__Osfx(basic_ostream_wchar *this)
6220 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6222 TRACE("(%p)\n", this);
6224 if(base->base.fmtfl & FMTFLAG_unitbuf)
6225 basic_ostream_short_flush(this);
6228 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
6229 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
6230 DEFINE_THISCALL_WRAPPER(basic_ostream_short_osfx, 4)
6231 void __thiscall basic_ostream_short_osfx(basic_ostream_wchar *this)
6233 TRACE("(%p)\n", this);
6234 basic_ostream_short__Osfx(this);
6237 static BOOL basic_ostream_short_sentry_create(basic_ostream_wchar *ostr)
6239 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(ostr);
6241 if(basic_ios_wchar_rdbuf_get(base))
6242 basic_streambuf_wchar__Lock(base->strbuf);
6244 if(ios_base_good(&base->base) && base->stream)
6245 basic_ostream_short_flush(base->stream);
6247 return ios_base_good(&base->base);
6250 static void basic_ostream_short_sentry_destroy(basic_ostream_wchar *ostr)
6252 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(ostr);
6254 if(ios_base_good(&base->base) && !__uncaught_exception())
6255 basic_ostream_short_osfx(ostr);
6257 if(basic_ios_wchar_rdbuf_get(base))
6258 basic_streambuf_wchar__Unlock(base->strbuf);
6261 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE_NXZ */
6262 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA_NXZ */
6263 DEFINE_THISCALL_WRAPPER(basic_ostream_short_opfx, 4)
6264 bool __thiscall basic_ostream_short_opfx(basic_ostream_wchar *this)
6266 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6268 TRACE("(%p)\n", this);
6270 if(ios_base_good(&base->base) && base->stream)
6271 basic_ostream_short_flush(base->stream);
6272 return ios_base_good(&base->base);
6275 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
6276 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
6277 DEFINE_THISCALL_WRAPPER(basic_ostream_short_put, 8)
6278 basic_ostream_wchar* __thiscall basic_ostream_short_put(basic_ostream_wchar *this, wchar_t ch)
6280 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6282 TRACE("(%p %c)\n", this, ch);
6284 if(!basic_ostream_short_sentry_create(this)
6285 || basic_streambuf_wchar_sputc(base->strbuf, ch)==WEOF) {
6286 basic_ostream_short_sentry_destroy(this);
6287 basic_ios_wchar_setstate(base, IOSTATE_badbit);
6288 return this;
6291 basic_ostream_short_sentry_destroy(this);
6292 return this;
6295 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
6296 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
6297 DEFINE_THISCALL_WRAPPER(basic_ostream_short_seekp, 12)
6298 basic_ostream_wchar* __thiscall basic_ostream_short_seekp(basic_ostream_wchar *this, streamoff off, int way)
6300 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6302 TRACE("(%p %Id %d)\n", this, off, way);
6304 if(!ios_base_fail(&base->base)) {
6305 fpos_int seek;
6307 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
6308 &seek, off, way, OPENMODE_out);
6309 if(seek.off==-1 && seek.pos==0 && seek.state==0)
6310 basic_ios_wchar_setstate(base, IOSTATE_failbit);
6312 return this;
6315 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
6316 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
6317 DEFINE_THISCALL_WRAPPER(basic_ostream_short_seekp_fpos, 28)
6318 basic_ostream_wchar* __thiscall basic_ostream_short_seekp_fpos(basic_ostream_wchar *this, fpos_int pos)
6320 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6322 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
6324 if(!ios_base_fail(&base->base)) {
6325 fpos_int seek;
6327 basic_streambuf_wchar_pubseekpos(basic_ios_wchar_rdbuf_get(base),
6328 &seek, pos, OPENMODE_out);
6329 if(seek.off==-1 && seek.pos==0 && seek.state==0)
6330 basic_ios_wchar_setstate(base, IOSTATE_failbit);
6332 return this;
6335 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
6336 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
6337 DEFINE_THISCALL_WRAPPER(basic_ostream_short_tellp, 8)
6338 fpos_int* __thiscall basic_ostream_short_tellp(basic_ostream_wchar *this, fpos_int *ret)
6340 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6342 TRACE("(%p)\n", this);
6344 if(!ios_base_fail(&base->base)) {
6345 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
6346 ret, 0, SEEKDIR_cur, OPENMODE_out);
6347 }else {
6348 ret->off = -1;
6349 ret->pos = 0;
6350 ret->state = 0;
6352 return ret;
6355 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@PBGH@Z */
6356 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEBG_J@Z */
6357 DEFINE_THISCALL_WRAPPER(basic_ostream_short_write, 12)
6358 basic_ostream_wchar* __thiscall basic_ostream_short_write(basic_ostream_wchar *this, const wchar_t *str, streamsize count)
6360 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6362 TRACE("(%p %s %Id)\n", this, debugstr_w(str), count);
6364 if(!basic_ostream_short_sentry_create(this)
6365 || basic_streambuf_wchar_sputn(base->strbuf, str, count)!=count) {
6366 basic_ostream_short_sentry_destroy(this);
6367 basic_ios_wchar_setstate(base, IOSTATE_badbit);
6368 return this;
6371 basic_ostream_short_sentry_destroy(this);
6372 return this;
6375 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@F@Z */
6376 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@F@Z */
6377 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_short, 8)
6378 basic_ostream_wchar* __thiscall basic_ostream_short_print_short(basic_ostream_wchar *this, short val)
6380 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6381 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_wchar_rdbuf_get(base)));
6382 int state = IOSTATE_goodbit;
6384 TRACE("(%p %d)\n", this, val);
6386 if(basic_ostream_short_sentry_create(this)) {
6387 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6388 ostreambuf_iterator_wchar dest;
6390 memset(&dest, 0, sizeof(dest));
6391 dest.strbuf = strbuf;
6392 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base),
6393 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
6394 ? (LONG)((unsigned short)val) : (LONG)val);
6396 basic_ostream_short_sentry_destroy(this);
6398 basic_ios_wchar_setstate(base, state);
6399 return this;
6402 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@G@Z */
6403 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@G@Z */
6404 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ushort, 8)
6405 basic_ostream_wchar* __thiscall basic_ostream_short_print_ushort(basic_ostream_wchar *this, unsigned short val)
6407 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6408 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_wchar_rdbuf_get(base)));
6409 int state = IOSTATE_goodbit;
6411 TRACE("(%p %d)\n", this, val);
6413 if(basic_ostream_short_sentry_create(this)) {
6414 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6415 ostreambuf_iterator_wchar dest;
6417 memset(&dest, 0, sizeof(dest));
6418 dest.strbuf = strbuf;
6419 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6421 basic_ostream_short_sentry_destroy(this);
6423 basic_ios_wchar_setstate(base, state);
6424 return this;
6427 /* ??6std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@G@Z */
6428 /* ??6std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@G@Z */
6429 basic_ostream_wchar* __cdecl basic_ostream_short_print_ushort_global(basic_ostream_wchar *ostr, unsigned short val)
6431 return basic_ostream_short_print_ushort(ostr, val);
6434 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@H@Z */
6435 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@H@Z */
6436 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@J@Z */
6437 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@J@Z */
6438 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int, 8)
6439 basic_ostream_wchar* __thiscall basic_ostream_short_print_int(basic_ostream_wchar *this, int val)
6441 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6442 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_wchar_rdbuf_get(base)));
6443 int state = IOSTATE_goodbit;
6445 TRACE("(%p %d)\n", this, val);
6447 if(basic_ostream_short_sentry_create(this)) {
6448 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6449 ostreambuf_iterator_wchar dest;
6451 memset(&dest, 0, sizeof(dest));
6452 dest.strbuf = strbuf;
6453 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6455 basic_ostream_short_sentry_destroy(this);
6457 basic_ios_wchar_setstate(base, state);
6458 return this;
6461 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@I@Z */
6462 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@I@Z */
6463 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@K@Z */
6464 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@K@Z */
6465 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint, 8)
6466 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint(basic_ostream_wchar *this, unsigned int val)
6468 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6469 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_wchar_rdbuf_get(base)));
6470 int state = IOSTATE_goodbit;
6472 TRACE("(%p %u)\n", this, val);
6474 if(basic_ostream_short_sentry_create(this)) {
6475 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6476 ostreambuf_iterator_wchar dest;
6478 memset(&dest, 0, sizeof(dest));
6479 dest.strbuf = strbuf;
6480 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6482 basic_ostream_short_sentry_destroy(this);
6484 basic_ios_wchar_setstate(base, state);
6485 return this;
6488 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@M@Z */
6489 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@M@Z */
6490 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_float, 8)
6491 basic_ostream_wchar* __thiscall basic_ostream_short_print_float(basic_ostream_wchar *this, float val)
6493 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6494 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_wchar_rdbuf_get(base)));
6495 int state = IOSTATE_goodbit;
6497 TRACE("(%p %f)\n", this, val);
6499 if(basic_ostream_short_sentry_create(this)) {
6500 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6501 ostreambuf_iterator_wchar dest;
6503 memset(&dest, 0, sizeof(dest));
6504 dest.strbuf = strbuf;
6505 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6507 basic_ostream_short_sentry_destroy(this);
6509 basic_ios_wchar_setstate(base, state);
6510 return this;
6513 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@N@Z */
6514 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@N@Z */
6515 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_double, 12)
6516 basic_ostream_wchar* __thiscall basic_ostream_short_print_double(basic_ostream_wchar *this, double val)
6518 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6519 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_wchar_rdbuf_get(base)));
6520 int state = IOSTATE_goodbit;
6522 TRACE("(%p %lf)\n", this, val);
6524 if(basic_ostream_short_sentry_create(this)) {
6525 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6526 ostreambuf_iterator_wchar dest;
6528 memset(&dest, 0, sizeof(dest));
6529 dest.strbuf = strbuf;
6530 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6532 basic_ostream_short_sentry_destroy(this);
6534 basic_ios_wchar_setstate(base, state);
6535 return this;
6538 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@O@Z */
6539 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@O@Z */
6540 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ldouble, 12)
6541 basic_ostream_wchar* __thiscall basic_ostream_short_print_ldouble(basic_ostream_wchar *this, double val)
6543 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6544 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_wchar_rdbuf_get(base)));
6545 int state = IOSTATE_goodbit;
6547 TRACE("(%p %lf)\n", this, val);
6549 if(basic_ostream_short_sentry_create(this)) {
6550 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6551 ostreambuf_iterator_wchar dest;
6553 memset(&dest, 0, sizeof(dest));
6554 dest.strbuf = strbuf;
6555 num_put_wchar_put_ldouble(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6557 basic_ostream_short_sentry_destroy(this);
6559 basic_ios_wchar_setstate(base, state);
6560 return this;
6563 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
6564 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
6565 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_streambuf, 8)
6566 basic_ostream_wchar* __thiscall basic_ostream_short_print_streambuf(basic_ostream_wchar *this, basic_streambuf_wchar *val)
6568 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6569 IOSB_iostate state = IOSTATE_badbit;
6570 unsigned short c = '\n';
6572 TRACE("(%p %p)\n", this, val);
6574 if(basic_ostream_short_sentry_create(this)) {
6575 for(c = basic_streambuf_wchar_sgetc(val); c!=WEOF;
6576 c = basic_streambuf_wchar_snextc(val)) {
6577 state = IOSTATE_goodbit;
6579 if(basic_streambuf_wchar_sputc(base->strbuf, c) == WEOF) {
6580 state = IOSTATE_badbit;
6581 break;
6584 }else {
6585 state = IOSTATE_badbit;
6587 basic_ostream_short_sentry_destroy(this);
6589 ios_base_width_set(&base->base, 0);
6590 basic_ios_wchar_setstate(base, state);
6591 return this;
6594 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PBX@Z */
6595 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEBX@Z */
6596 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ptr, 8)
6597 basic_ostream_wchar* __thiscall basic_ostream_short_print_ptr(basic_ostream_wchar *this, const void *val)
6599 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6600 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_wchar_rdbuf_get(base)));
6601 int state = IOSTATE_goodbit;
6603 TRACE("(%p %p)\n", this, val);
6605 if(basic_ostream_short_sentry_create(this)) {
6606 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6607 ostreambuf_iterator_wchar dest;
6609 memset(&dest, 0, sizeof(dest));
6610 dest.strbuf = strbuf;
6611 num_put_wchar_put_ptr(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6613 basic_ostream_short_sentry_destroy(this);
6615 basic_ios_wchar_setstate(base, state);
6616 return this;
6619 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_J@Z */
6620 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_J@Z */
6621 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int64, 12)
6622 basic_ostream_wchar* __thiscall basic_ostream_short_print_int64(basic_ostream_wchar *this, __int64 val)
6624 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6625 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_wchar_rdbuf_get(base)));
6626 int state = IOSTATE_goodbit;
6628 TRACE("(%p)\n", this);
6630 if(basic_ostream_short_sentry_create(this)) {
6631 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6632 ostreambuf_iterator_wchar dest;
6634 memset(&dest, 0, sizeof(dest));
6635 dest.strbuf = strbuf;
6636 num_put_wchar_put_int64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6638 basic_ostream_short_sentry_destroy(this);
6640 basic_ios_wchar_setstate(base, state);
6641 return this;
6644 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_K@Z */
6645 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_K@Z */
6646 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint64, 12)
6647 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
6649 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6650 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_wchar_rdbuf_get(base)));
6651 int state = IOSTATE_goodbit;
6653 TRACE("(%p)\n", this);
6655 if(basic_ostream_short_sentry_create(this)) {
6656 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6657 ostreambuf_iterator_wchar dest;
6659 memset(&dest, 0, sizeof(dest));
6660 dest.strbuf = strbuf;
6661 num_put_wchar_put_uint64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6663 basic_ostream_short_sentry_destroy(this);
6665 basic_ios_wchar_setstate(base, state);
6666 return this;
6669 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_N@Z */
6670 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_N@Z */
6671 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_bool, 8)
6672 basic_ostream_wchar* __thiscall basic_ostream_short_print_bool(basic_ostream_wchar *this, bool val)
6674 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
6675 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_wchar_rdbuf_get(base)));
6676 int state = IOSTATE_goodbit;
6678 TRACE("(%p %x)\n", this, val);
6680 if(basic_ostream_short_sentry_create(this)) {
6681 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6682 ostreambuf_iterator_wchar dest;
6684 memset(&dest, 0, sizeof(dest));
6685 dest.strbuf = strbuf;
6686 num_put_wchar_put_bool(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6688 basic_ostream_short_sentry_destroy(this);
6690 basic_ios_wchar_setstate(base, state);
6691 return this;
6694 /* ?ends@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
6695 /* ?ends@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
6696 basic_ostream_wchar* __cdecl basic_ostream_short_ends(basic_ostream_wchar *ostr)
6698 TRACE("(%p)\n", ostr);
6700 basic_ostream_short_put(ostr, 0);
6701 return ostr;
6704 /* ?endl@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
6705 /* ?endl@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
6706 basic_ostream_wchar* __cdecl basic_ostream_short_endl(basic_ostream_wchar *ostr)
6708 TRACE("(%p)\n", ostr);
6710 basic_ostream_short_put(ostr, '\n');
6711 basic_ostream_short_flush(ostr);
6712 return ostr;
6715 /* ??$?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 */
6716 /* ??$?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 */
6717 basic_ostream_wchar* __cdecl basic_ostream_short_print_bstr(basic_ostream_wchar *ostr, const basic_string_wchar *str)
6719 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(ostr);
6720 IOSB_iostate state = IOSTATE_goodbit;
6722 TRACE("(%p %p)\n", ostr, str);
6724 if(basic_ostream_short_sentry_create(ostr)) {
6725 size_t len = MSVCP_basic_string_wchar_length(str);
6726 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
6728 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6729 for(; pad!=0; pad--) {
6730 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6731 state = IOSTATE_badbit;
6732 break;
6737 if(state == IOSTATE_goodbit) {
6738 if(basic_streambuf_wchar_sputn(base->strbuf, MSVCP_basic_string_wchar_c_str(str), len) != len)
6739 state = IOSTATE_badbit;
6742 if(state == IOSTATE_goodbit) {
6743 for(; pad!=0; pad--) {
6744 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6745 state = IOSTATE_badbit;
6746 break;
6751 base->base.wide = 0;
6752 }else {
6753 state = IOSTATE_badbit;
6755 basic_ostream_short_sentry_destroy(ostr);
6757 basic_ios_wchar_setstate(base, state);
6758 return ostr;
6761 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@G@Z */
6762 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@G@Z */
6763 basic_ostream_wchar* __cdecl basic_ostream_short_print_ch(basic_ostream_wchar *ostr, wchar_t ch)
6765 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(ostr);
6766 IOSB_iostate state = IOSTATE_goodbit;
6768 TRACE("(%p %d)\n", ostr, ch);
6770 if(basic_ostream_short_sentry_create(ostr)) {
6771 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
6773 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6774 for(; pad!=0; pad--) {
6775 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6776 state = IOSTATE_badbit;
6777 break;
6782 if(state == IOSTATE_goodbit) {
6783 if(basic_streambuf_wchar_sputc(base->strbuf, ch) == WEOF)
6784 state = IOSTATE_badbit;
6787 if(state == IOSTATE_goodbit) {
6788 for(; pad!=0; pad--) {
6789 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6790 state = IOSTATE_badbit;
6791 break;
6796 base->base.wide = 0;
6797 }else {
6798 state = IOSTATE_badbit;
6800 basic_ostream_short_sentry_destroy(ostr);
6802 basic_ios_wchar_setstate(base, state);
6803 return ostr;
6806 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@PBG@Z */
6807 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@PEBG@Z */
6808 basic_ostream_wchar* __cdecl basic_ostream_short_print_str(basic_ostream_wchar *ostr, const wchar_t *str)
6810 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(ostr);
6811 IOSB_iostate state = IOSTATE_goodbit;
6813 TRACE("(%p %s)\n", ostr, debugstr_w(str));
6815 if(basic_ostream_short_sentry_create(ostr)) {
6816 size_t len = wcslen(str);
6817 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
6819 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6820 for(; pad!=0; pad--) {
6821 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6822 state = IOSTATE_badbit;
6823 break;
6828 if(state == IOSTATE_goodbit) {
6829 if(basic_streambuf_wchar_sputn(base->strbuf, str, len) != len)
6830 state = IOSTATE_badbit;
6833 if(state == IOSTATE_goodbit) {
6834 for(; pad!=0; pad--) {
6835 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6836 state = IOSTATE_badbit;
6837 break;
6842 base->base.wide = 0;
6843 }else {
6844 state = IOSTATE_badbit;
6846 basic_ostream_short_sentry_destroy(ostr);
6848 basic_ios_wchar_setstate(base, state);
6849 return ostr;
6852 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
6853 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
6854 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_func, 8)
6855 basic_ostream_wchar* __thiscall basic_ostream_short_print_func(basic_ostream_wchar *this,
6856 basic_ostream_wchar* (__cdecl *pfunc)(basic_ostream_wchar*))
6858 TRACE("(%p %p)\n", this, pfunc);
6859 pfunc(this);
6860 return this;
6863 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
6864 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
6865 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_func_basic_ios, 8)
6866 basic_ostream_wchar* __thiscall basic_ostream_short_print_func_basic_ios(basic_ostream_wchar *this,
6867 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
6869 TRACE("(%p %p)\n", this, pfunc);
6870 pfunc(basic_ostream_short_get_basic_ios(this));
6871 return this;
6874 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
6875 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
6876 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_func_ios_base, 8)
6877 basic_ostream_wchar* __thiscall basic_ostream_short_print_func_ios_base(
6878 basic_ostream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
6880 TRACE("(%p %p)\n", this, pfunc);
6881 pfunc(&basic_ostream_short_get_basic_ios(this)->base);
6882 return this;
6885 /* ?swap@?$basic_ostream@GU?$char_traits@G@std@@@std@@IAEXAAV12@@Z */
6886 /* ?swap@?$basic_ostream@GU?$char_traits@G@std@@@std@@IEAAXAEAV12@@Z */
6887 DEFINE_THISCALL_WRAPPER(basic_ostream_short_swap, 8)
6888 void __thiscall basic_ostream_short_swap(basic_ostream_wchar *this, basic_ostream_wchar *r)
6890 TRACE("(%p %p)\n", this, r);
6892 if(this == r)
6893 return;
6895 basic_ios_wchar_swap(basic_ostream_short_get_basic_ios(this),
6896 basic_ostream_short_get_basic_ios(r));
6899 /* Caution: basic_istream uses virtual inheritance. */
6900 static inline basic_ios_char* basic_istream_char_get_basic_ios(basic_istream_char *this)
6902 return (basic_ios_char*)((char*)this+this->vbtable[1]);
6905 static inline basic_ios_char* basic_istream_char_to_basic_ios(basic_istream_char *ptr)
6907 return (basic_ios_char*)((char*)ptr+basic_istream_char_vbtable[1]);
6910 static inline basic_istream_char* basic_istream_char_from_basic_ios(basic_ios_char *ptr)
6912 return (basic_istream_char*)((char*)ptr-basic_istream_char_vbtable[1]);
6915 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
6916 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
6917 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_init, 20)
6918 basic_istream_char* __thiscall basic_istream_char_ctor_init(basic_istream_char *this, basic_streambuf_char *strbuf, bool isstd, bool noinit, bool virt_init)
6920 basic_ios_char *base;
6922 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
6924 if(virt_init) {
6925 this->vbtable = basic_istream_char_vbtable;
6926 base = basic_istream_char_get_basic_ios(this);
6927 basic_ios_char_ctor(base);
6928 }else {
6929 base = basic_istream_char_get_basic_ios(this);
6932 base->base.vtable = &basic_istream_char_vtable;
6933 this->count = 0;
6934 if(!noinit)
6935 basic_ios_char_init(base, strbuf, isstd);
6936 return this;
6939 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
6940 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
6941 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor, 16)
6942 basic_istream_char* __thiscall basic_istream_char_ctor(basic_istream_char *this, basic_streambuf_char *strbuf, bool isstd, bool virt_init)
6944 return basic_istream_char_ctor_init(this, strbuf, isstd, FALSE, virt_init);
6947 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
6948 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
6949 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_uninitialized, 12)
6950 basic_istream_char* __thiscall basic_istream_char_ctor_uninitialized(basic_istream_char *this, int uninitialized, bool virt_init)
6952 basic_ios_char *base;
6954 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
6956 if(virt_init) {
6957 this->vbtable = basic_istream_char_vbtable;
6958 base = basic_istream_char_get_basic_ios(this);
6959 basic_ios_char_ctor(base);
6960 }else {
6961 base = basic_istream_char_get_basic_ios(this);
6964 base->base.vtable = &basic_istream_char_vtable;
6965 ios_base_Addstd(&base->base);
6966 return this;
6969 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UAE@XZ */
6970 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
6971 DEFINE_THISCALL_WRAPPER(basic_istream_char_dtor, 4)
6972 void __thiscall basic_istream_char_dtor(basic_ios_char *base)
6974 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
6976 /* don't destroy virtual base here */
6977 TRACE("(%p)\n", this);
6980 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
6981 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
6982 DEFINE_THISCALL_WRAPPER(basic_istream_char_vbase_dtor, 4)
6983 void __thiscall basic_istream_char_vbase_dtor(basic_istream_char *this)
6985 TRACE("(%p)\n", this);
6986 basic_istream_char_dtor(basic_istream_char_to_basic_ios(this));
6987 basic_ios_char_dtor(basic_istream_char_get_basic_ios(this));
6990 DEFINE_THISCALL_WRAPPER(basic_istream_char_vector_dtor, 8)
6991 basic_istream_char* __thiscall basic_istream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
6993 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
6995 TRACE("(%p %x)\n", this, flags);
6997 if(flags & 2) {
6998 /* we have an array, with the number of elements stored before the first object */
6999 INT_PTR i, *ptr = (INT_PTR *)this-1;
7001 for(i=*ptr-1; i>=0; i--)
7002 basic_istream_char_vbase_dtor(this+i);
7003 operator_delete(ptr);
7004 } else {
7005 basic_istream_char_vbase_dtor(this);
7006 if(flags & 1)
7007 operator_delete(this);
7010 return this;
7013 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
7014 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
7015 DEFINE_THISCALL_WRAPPER(basic_istream_char__Ipfx, 8)
7016 bool __thiscall basic_istream_char__Ipfx(basic_istream_char *this, bool noskip)
7018 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7020 TRACE("(%p %d)\n", this, noskip);
7022 if(ios_base_good(&base->base)) {
7023 if(basic_ios_char_tie_get(base))
7024 basic_ostream_char_flush(basic_ios_char_tie_get(base));
7026 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
7027 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7028 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(base->strbuf));
7029 int ch;
7031 for(ch = basic_streambuf_char_sgetc(strbuf); ;
7032 ch = basic_streambuf_char_snextc(strbuf)) {
7033 if(ch==EOF || !ctype_char_is_ch(ctype, _SPACE|_BLANK, ch))
7034 break;
7039 if(!ios_base_good(&base->base)) {
7040 basic_ios_char_setstate(base, IOSTATE_failbit);
7041 return FALSE;
7044 return TRUE;
7047 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
7048 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
7049 DEFINE_THISCALL_WRAPPER(basic_istream_char_ipfx, 8)
7050 bool __thiscall basic_istream_char_ipfx(basic_istream_char *this, bool noskip)
7052 return basic_istream_char__Ipfx(this, noskip);
7055 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
7056 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
7057 DEFINE_THISCALL_WRAPPER(basic_istream_char_isfx, 4)
7058 void __thiscall basic_istream_char_isfx(basic_istream_char *this)
7060 TRACE("(%p)\n", this);
7063 static BOOL basic_istream_char_sentry_create(basic_istream_char *istr, bool noskip)
7065 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
7067 if(basic_ios_char_rdbuf_get(base))
7068 call_basic_streambuf_char__Lock(base->strbuf);
7070 return basic_istream_char_ipfx(istr, noskip);
7073 static void basic_istream_char_sentry_destroy(basic_istream_char *istr)
7075 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
7077 if(basic_ios_char_rdbuf_get(base))
7078 call_basic_streambuf_char__Unlock(base->strbuf);
7081 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBEHXZ */
7082 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QEBA_JXZ */
7083 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBA_JXZ */
7084 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBE_JXZ */
7085 DEFINE_THISCALL_WRAPPER(basic_istream_char_gcount, 4)
7086 streamsize __thiscall basic_istream_char_gcount(const basic_istream_char *this)
7088 TRACE("(%p)\n", this);
7089 return this->count;
7092 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
7093 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
7094 DEFINE_THISCALL_WRAPPER(basic_istream_char_get, 4)
7095 int __thiscall basic_istream_char_get(basic_istream_char *this)
7097 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7098 int ret;
7100 TRACE("(%p)\n", this);
7102 this->count = 0;
7104 if(!basic_istream_char_sentry_create(this, TRUE)) {
7105 basic_istream_char_sentry_destroy(this);
7106 return EOF;
7109 ret = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(base));
7110 basic_istream_char_sentry_destroy(this);
7111 if(ret == EOF)
7112 basic_ios_char_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
7113 else
7114 this->count++;
7116 return ret;
7119 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAD@Z */
7120 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAD@Z */
7121 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_ch, 8)
7122 basic_istream_char* __thiscall basic_istream_char_get_ch(basic_istream_char *this, char *ch)
7124 int ret;
7126 TRACE("(%p %p)\n", this, ch);
7128 ret = basic_istream_char_get(this);
7129 if(ret != EOF)
7130 *ch = (char)ret;
7131 return this;
7134 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
7135 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
7136 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str_delim, 16)
7137 basic_istream_char* __thiscall basic_istream_char_get_str_delim(basic_istream_char *this, char *str, streamsize count, char delim)
7139 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7140 int ch = delim;
7142 TRACE("(%p %p %Id %s)\n", this, str, count, debugstr_an(&delim, 1));
7144 this->count = 0;
7146 if(basic_istream_char_sentry_create(this, TRUE)) {
7147 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7149 for(ch = basic_streambuf_char_sgetc(strbuf); count>1;
7150 ch = basic_streambuf_char_snextc(strbuf)) {
7151 if(ch==EOF || ch==delim)
7152 break;
7154 *str++ = ch;
7155 this->count++;
7156 count--;
7159 basic_istream_char_sentry_destroy(this);
7161 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
7162 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7163 if(count > 0)
7164 *str = 0;
7165 return this;
7168 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
7169 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
7170 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str, 12)
7171 basic_istream_char* __thiscall basic_istream_char_get_str(basic_istream_char *this, char *str, streamsize count)
7173 return basic_istream_char_get_str_delim(this, str, count, '\n');
7176 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
7177 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
7178 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf_delim, 12)
7179 basic_istream_char* __thiscall basic_istream_char_get_streambuf_delim(basic_istream_char *this, basic_streambuf_char *strbuf, char delim)
7181 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7182 int ch = delim;
7184 TRACE("(%p %p %s)\n", this, strbuf, debugstr_an(&delim, 1));
7186 this->count = 0;
7188 if(basic_istream_char_sentry_create(this, TRUE)) {
7189 basic_streambuf_char *strbuf_read = basic_ios_char_rdbuf_get(base);
7191 for(ch = basic_streambuf_char_sgetc(strbuf_read); ;
7192 ch = basic_streambuf_char_snextc(strbuf_read)) {
7193 if(ch==EOF || ch==delim)
7194 break;
7196 if(basic_streambuf_char_sputc(strbuf, ch) == EOF)
7197 break;
7198 this->count++;
7201 basic_istream_char_sentry_destroy(this);
7203 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
7204 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7205 return this;
7208 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
7209 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
7210 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf, 8)
7211 basic_istream_char* __thiscall basic_istream_char_get_streambuf(basic_istream_char *this, basic_streambuf_char *strbuf)
7213 return basic_istream_char_get_streambuf_delim(this, strbuf, '\n');
7216 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
7217 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
7218 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline_delim, 16)
7219 basic_istream_char* __thiscall basic_istream_char_getline_delim(basic_istream_char *this, char *str, streamsize count, char delim)
7221 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7222 int ch = (unsigned char)delim;
7224 TRACE("(%p %p %Id %s)\n", this, str, count, debugstr_an(&delim, 1));
7226 this->count = 0;
7228 if(basic_istream_char_sentry_create(this, TRUE) && count>0) {
7229 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7231 while(count > 1) {
7232 ch = basic_streambuf_char_sbumpc(strbuf);
7234 if(ch==EOF || ch==(unsigned char)delim)
7235 break;
7237 *str++ = ch;
7238 this->count++;
7239 count--;
7242 if(ch == (unsigned char)delim)
7243 this->count++;
7244 else if(ch != EOF) {
7245 ch = basic_streambuf_char_sgetc(strbuf);
7247 if(ch == (unsigned char)delim) {
7248 basic_streambuf_char__Gninc(strbuf);
7249 this->count++;
7253 basic_istream_char_sentry_destroy(this);
7255 basic_ios_char_setstate(base, (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
7256 (!this->count || (ch!=(unsigned char)delim && ch!=EOF) ? IOSTATE_failbit : IOSTATE_goodbit));
7257 if(count > 0)
7258 *str = 0;
7259 return this;
7262 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
7263 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
7264 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline, 12)
7265 basic_istream_char* __thiscall basic_istream_char_getline(basic_istream_char *this, char *str, streamsize count)
7267 return basic_istream_char_getline_delim(this, str, count, '\n');
7270 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@HH@Z */
7271 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
7272 DEFINE_THISCALL_WRAPPER(basic_istream_char_ignore, 12)
7273 basic_istream_char* __thiscall basic_istream_char_ignore(basic_istream_char *this, streamsize count, int delim)
7275 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7276 int ch = (unsigned char)delim;
7277 unsigned int state;
7279 TRACE("(%p %Id %d)\n", this, count, delim);
7281 this->count = 0;
7283 if(basic_istream_char_sentry_create(this, TRUE)) {
7284 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7285 state = IOSTATE_goodbit;
7287 while(count > 0) {
7288 ch = basic_streambuf_char_sbumpc(strbuf);
7290 if(ch==EOF) {
7291 state = IOSTATE_eofbit;
7292 break;
7295 if(ch==delim)
7296 break;
7298 this->count++;
7299 if(count != INT_MAX)
7300 count--;
7302 }else
7303 state = IOSTATE_failbit;
7304 basic_istream_char_sentry_destroy(this);
7306 basic_ios_char_setstate(base, state);
7307 return this;
7310 /* ?ws@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@1@AAV21@@Z */
7311 /* ?ws@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
7312 basic_istream_char* __cdecl ws_basic_istream_char(basic_istream_char *istream)
7314 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
7315 int ch = '\n';
7317 TRACE("(%p)\n", istream);
7319 if(basic_istream_char_sentry_create(istream, TRUE)) {
7320 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7321 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(strbuf));
7323 for(ch = basic_streambuf_char_sgetc(strbuf); ctype_char_is_ch(ctype, _SPACE, ch);
7324 ch = basic_streambuf_char_snextc(strbuf)) {
7325 if(ch == EOF)
7326 break;
7329 basic_istream_char_sentry_destroy(istream);
7331 if(ch == EOF)
7332 basic_ios_char_setstate(base, IOSTATE_eofbit);
7333 return istream;
7336 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
7337 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
7338 DEFINE_THISCALL_WRAPPER(basic_istream_char_peek, 4)
7339 int __thiscall basic_istream_char_peek(basic_istream_char *this)
7341 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7342 int ret = EOF;
7344 TRACE("(%p)\n", this);
7346 this->count = 0;
7348 if(basic_istream_char_sentry_create(this, TRUE))
7349 ret = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
7350 basic_istream_char_sentry_destroy(this);
7352 if (ret == EOF)
7353 basic_ios_char_setstate(base, IOSTATE_eofbit);
7355 return ret;
7358 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADIH@Z */
7359 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_K_J@Z */
7360 DEFINE_THISCALL_WRAPPER(basic_istream_char__Read_s, 16)
7361 basic_istream_char* __thiscall basic_istream_char__Read_s(basic_istream_char *this, char *str, size_t size, streamsize count)
7363 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7364 IOSB_iostate state = IOSTATE_goodbit;
7366 TRACE("(%p %p %Iu %Id)\n", this, str, size, count);
7368 if(basic_istream_char_sentry_create(this, TRUE)) {
7369 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7371 this->count = basic_streambuf_char__Sgetn_s(strbuf, str, size, count);
7372 if(this->count != count)
7373 state |= IOSTATE_failbit | IOSTATE_eofbit;
7374 }else {
7375 this->count = 0;
7377 basic_istream_char_sentry_destroy(this);
7379 basic_ios_char_setstate(base, state);
7380 return this;
7383 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
7384 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
7385 DEFINE_THISCALL_WRAPPER(basic_istream_char_read, 12)
7386 basic_istream_char* __thiscall basic_istream_char_read(basic_istream_char *this, char *str, streamsize count)
7388 return basic_istream_char__Read_s(this, str, -1, count);
7391 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
7392 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
7393 DEFINE_THISCALL_WRAPPER(basic_istream_char__Readsome_s, 16)
7394 streamsize __thiscall basic_istream_char__Readsome_s(basic_istream_char *this, char *str, size_t size, streamsize count)
7396 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7397 IOSB_iostate state = IOSTATE_goodbit;
7399 TRACE("(%p %p %Iu %Id)\n", this, str, size, count);
7401 this->count = 0;
7403 if(basic_istream_char_sentry_create(this, TRUE)) {
7404 streamsize avail = basic_streambuf_char_in_avail(basic_ios_char_rdbuf_get(base));
7405 if(avail > count)
7406 avail = count;
7408 if(avail == -1)
7409 state |= IOSTATE_eofbit;
7410 else if(avail > 0)
7411 basic_istream_char__Read_s(this, str, size, avail);
7412 }else {
7413 state |= IOSTATE_failbit;
7415 basic_istream_char_sentry_destroy(this);
7417 basic_ios_char_setstate(base, state);
7418 return this->count;
7421 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
7422 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
7423 DEFINE_THISCALL_WRAPPER(basic_istream_char_readsome, 12)
7424 streamsize __thiscall basic_istream_char_readsome(basic_istream_char *this, char *str, streamsize count)
7426 return basic_istream_char__Readsome_s(this, str, count, count);
7429 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
7430 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
7431 DEFINE_THISCALL_WRAPPER(basic_istream_char_putback, 8)
7432 basic_istream_char* __thiscall basic_istream_char_putback(basic_istream_char *this, char ch)
7434 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7435 IOSB_iostate state = IOSTATE_goodbit;
7437 TRACE("(%p %c)\n", this, ch);
7439 this->count = 0;
7441 if(basic_istream_char_sentry_create(this, TRUE)) {
7442 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7444 if(!ios_base_good(&base->base))
7445 state |= IOSTATE_failbit;
7446 else if(!strbuf || basic_streambuf_char_sputbackc(strbuf, ch)==EOF)
7447 state |= IOSTATE_badbit;
7449 basic_istream_char_sentry_destroy(this);
7451 basic_ios_char_setstate(base, state);
7452 return this;
7455 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
7456 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
7457 DEFINE_THISCALL_WRAPPER(basic_istream_char_unget, 4)
7458 basic_istream_char* __thiscall basic_istream_char_unget(basic_istream_char *this)
7460 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7461 IOSB_iostate state = IOSTATE_goodbit;
7463 TRACE("(%p)\n", this);
7465 this->count = 0;
7467 if(basic_istream_char_sentry_create(this, TRUE)) {
7468 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7470 if(!ios_base_good(&base->base))
7471 state |= IOSTATE_failbit;
7472 else if(!strbuf || basic_streambuf_char_sungetc(strbuf)==EOF)
7473 state |= IOSTATE_badbit;
7475 basic_istream_char_sentry_destroy(this);
7477 basic_ios_char_setstate(base, state);
7478 return this;
7481 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
7482 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
7483 DEFINE_THISCALL_WRAPPER(basic_istream_char_sync, 4)
7484 int __thiscall basic_istream_char_sync(basic_istream_char *this)
7486 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7487 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7489 TRACE("(%p)\n", this);
7491 if(!strbuf)
7492 return -1;
7494 if(basic_istream_char_sentry_create(this, TRUE)) {
7495 if(basic_streambuf_char_pubsync(strbuf) != -1) {
7496 basic_istream_char_sentry_destroy(this);
7497 return 0;
7500 basic_istream_char_sentry_destroy(this);
7502 basic_ios_char_setstate(base, IOSTATE_badbit);
7503 return -1;
7506 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
7507 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
7508 DEFINE_THISCALL_WRAPPER(basic_istream_char_tellg, 8)
7509 fpos_int* __thiscall basic_istream_char_tellg(basic_istream_char *this, fpos_int *ret)
7511 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7513 TRACE("(%p %p)\n", this, ret);
7515 if(ios_base_fail(&base->base)) {
7516 ret->off = -1;
7517 ret->pos = 0;
7518 ret->state = 0;
7519 return ret;
7522 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
7523 ret, 0, SEEKDIR_cur, OPENMODE_in);
7525 return ret;
7528 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@JW4seekdir@ios_base@2@@Z */
7529 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JW4seekdir@ios_base@2@@Z */
7530 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
7531 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
7532 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg, 12)
7533 basic_istream_char* __thiscall basic_istream_char_seekg(basic_istream_char *this, streamoff off, int dir)
7535 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7537 TRACE("(%p %Id %d)\n", this, off, dir);
7539 if(!ios_base_fail(&base->base)) {
7540 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7541 fpos_int ret;
7543 basic_streambuf_char_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
7546 return this;
7549 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
7550 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
7551 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg_fpos, 28)
7552 basic_istream_char* __thiscall basic_istream_char_seekg_fpos(basic_istream_char *this, fpos_int pos)
7554 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7556 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
7558 if(!ios_base_fail(&base->base)) {
7559 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7560 fpos_int ret;
7562 basic_streambuf_char_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
7565 return this;
7568 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAF@Z */
7569 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAF@Z */
7570 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_short, 8)
7571 basic_istream_char* __thiscall basic_istream_char_read_short(basic_istream_char *this, short *v)
7573 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7574 int state = IOSTATE_goodbit;
7576 TRACE("(%p %p)\n", this, v);
7578 if(basic_istream_char_sentry_create(this, FALSE)) {
7579 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7580 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
7581 istreambuf_iterator_char first={0}, last={0};
7582 LONG tmp;
7584 first.strbuf = strbuf;
7585 num_get_char_get_long(numget, &last, first, last, &base->base, &state, &tmp);
7587 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
7588 *v = tmp;
7589 else
7590 state |= IOSTATE_failbit;
7592 basic_istream_char_sentry_destroy(this);
7594 basic_ios_char_setstate(base, state);
7595 return this;
7598 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAG@Z */
7599 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAG@Z */
7600 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ushort, 8)
7601 basic_istream_char* __thiscall basic_istream_char_read_ushort(basic_istream_char *this, unsigned short *v)
7603 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7604 int state = IOSTATE_goodbit;
7606 TRACE("(%p %p)\n", this, v);
7608 if(basic_istream_char_sentry_create(this, FALSE)) {
7609 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7610 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
7611 istreambuf_iterator_char first={0}, last={0};
7613 first.strbuf = strbuf;
7614 num_get_char_get_ushort(numget, &last, first, last, &base->base, &state, v);
7616 basic_istream_char_sentry_destroy(this);
7618 basic_ios_char_setstate(base, state);
7619 return this;
7622 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAH@Z */
7623 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAH@Z */
7624 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int, 8)
7625 basic_istream_char* __thiscall basic_istream_char_read_int(basic_istream_char *this, int *v)
7627 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7628 int state = IOSTATE_goodbit;
7630 TRACE("(%p %p)\n", this, v);
7632 if(basic_istream_char_sentry_create(this, FALSE)) {
7633 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7634 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
7635 istreambuf_iterator_char first={0}, last={0};
7637 first.strbuf = strbuf;
7638 num_get_char_get_long(numget, &last, first, last, &base->base, &state, (LONG*)v);
7640 basic_istream_char_sentry_destroy(this);
7642 basic_ios_char_setstate(base, state);
7643 return this;
7646 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAI@Z */
7647 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAI@Z */
7648 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint, 8)
7649 basic_istream_char* __thiscall basic_istream_char_read_uint(basic_istream_char *this, unsigned int *v)
7651 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7652 int state = IOSTATE_goodbit;
7654 TRACE("(%p %p)\n", this, v);
7656 if(basic_istream_char_sentry_create(this, FALSE)) {
7657 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7658 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
7659 istreambuf_iterator_char first={0}, last={0};
7661 first.strbuf = strbuf;
7662 num_get_char_get_uint(numget, &last, first, last, &base->base, &state, v);
7664 basic_istream_char_sentry_destroy(this);
7666 basic_ios_char_setstate(base, state);
7667 return this;
7670 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAJ@Z */
7671 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAJ@Z */
7672 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_long, 8)
7673 basic_istream_char* __thiscall basic_istream_char_read_long(basic_istream_char *this, LONG *v)
7675 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7676 int state = IOSTATE_goodbit;
7678 TRACE("(%p %p)\n", this, v);
7680 if(basic_istream_char_sentry_create(this, FALSE)) {
7681 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7682 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
7683 istreambuf_iterator_char first={0}, last={0};
7685 first.strbuf = strbuf;
7686 num_get_char_get_long(numget, &last, first, last, &base->base, &state, v);
7688 basic_istream_char_sentry_destroy(this);
7690 basic_ios_char_setstate(base, state);
7691 return this;
7694 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAK@Z */
7695 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAK@Z */
7696 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ulong, 8)
7697 basic_istream_char* __thiscall basic_istream_char_read_ulong(basic_istream_char *this, ULONG *v)
7699 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7700 int state = IOSTATE_goodbit;
7702 TRACE("(%p %p)\n", this, v);
7704 if(basic_istream_char_sentry_create(this, FALSE)) {
7705 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7706 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
7707 istreambuf_iterator_char first={0}, last={0};
7709 first.strbuf = strbuf;
7710 num_get_char_get_ulong(numget, &last, first, last, &base->base, &state, v);
7712 basic_istream_char_sentry_destroy(this);
7714 basic_ios_char_setstate(base, state);
7715 return this;
7718 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAM@Z */
7719 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAM@Z */
7720 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_float, 8)
7721 basic_istream_char* __thiscall basic_istream_char_read_float(basic_istream_char *this, float *v)
7723 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7724 int state = IOSTATE_goodbit;
7726 TRACE("(%p %p)\n", this, v);
7728 if(basic_istream_char_sentry_create(this, FALSE)) {
7729 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7730 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
7731 istreambuf_iterator_char first={0}, last={0};
7733 first.strbuf = strbuf;
7734 num_get_char_get_float(numget, &last, first, last, &base->base, &state, v);
7736 basic_istream_char_sentry_destroy(this);
7738 basic_ios_char_setstate(base, state);
7739 return this;
7742 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAN@Z */
7743 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAN@Z */
7744 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_double, 8)
7745 basic_istream_char* __thiscall basic_istream_char_read_double(basic_istream_char *this, double *v)
7747 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7748 int state = IOSTATE_goodbit;
7750 TRACE("(%p %p)\n", this, v);
7752 if(basic_istream_char_sentry_create(this, FALSE)) {
7753 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7754 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
7755 istreambuf_iterator_char first={0}, last={0};
7757 first.strbuf = strbuf;
7758 num_get_char_get_double(numget, &last, first, last, &base->base, &state, v);
7760 basic_istream_char_sentry_destroy(this);
7762 basic_ios_char_setstate(base, state);
7763 return this;
7766 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAO@Z */
7767 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAO@Z */
7768 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ldouble, 8)
7769 basic_istream_char* __thiscall basic_istream_char_read_ldouble(basic_istream_char *this, double *v)
7771 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7772 int state = IOSTATE_goodbit;
7774 TRACE("(%p %p)\n", this, v);
7776 if(basic_istream_char_sentry_create(this, FALSE)) {
7777 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7778 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
7779 istreambuf_iterator_char first={0}, last={0};
7781 first.strbuf = strbuf;
7782 num_get_char_get_ldouble(numget, &last, first, last, &base->base, &state, v);
7784 basic_istream_char_sentry_destroy(this);
7786 basic_ios_char_setstate(base, state);
7787 return this;
7790 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAPAX@Z */
7791 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
7792 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ptr, 8)
7793 basic_istream_char* __thiscall basic_istream_char_read_ptr(basic_istream_char *this, void **v)
7795 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7796 int state = IOSTATE_goodbit;
7798 TRACE("(%p %p)\n", this, v);
7800 if(basic_istream_char_sentry_create(this, FALSE)) {
7801 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7802 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
7803 istreambuf_iterator_char first={0}, last={0};
7805 first.strbuf = strbuf;
7806 num_get_char_get_void(numget, &last, first, last, &base->base, &state, v);
7808 basic_istream_char_sentry_destroy(this);
7810 basic_ios_char_setstate(base, state);
7811 return this;
7814 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_J@Z */
7815 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_J@Z */
7816 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int64, 8)
7817 basic_istream_char* __thiscall basic_istream_char_read_int64(basic_istream_char *this, __int64 *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(IOS_LOCALE(strbuf));
7827 istreambuf_iterator_char first={0}, last={0};
7829 first.strbuf = strbuf;
7830 num_get_char_get_int64(numget, &last, first, last, &base->base, &state, v);
7832 basic_istream_char_sentry_destroy(this);
7834 basic_ios_char_setstate(base, state);
7835 return this;
7838 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_K@Z */
7839 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_K@Z */
7840 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint64, 8)
7841 basic_istream_char* __thiscall basic_istream_char_read_uint64(basic_istream_char *this, unsigned __int64 *v)
7843 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7844 int state = IOSTATE_goodbit;
7846 TRACE("(%p %p)\n", this, v);
7848 if(basic_istream_char_sentry_create(this, FALSE)) {
7849 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7850 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
7851 istreambuf_iterator_char first={0}, last={0};
7853 first.strbuf = strbuf;
7854 num_get_char_get_uint64(numget, &last, first, last, &base->base, &state, v);
7856 basic_istream_char_sentry_destroy(this);
7858 basic_ios_char_setstate(base, state);
7859 return this;
7862 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_N@Z */
7863 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_N@Z */
7864 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_bool, 8)
7865 basic_istream_char* __thiscall basic_istream_char_read_bool(basic_istream_char *this, bool *v)
7867 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7868 int state = IOSTATE_goodbit;
7870 TRACE("(%p %p)\n", this, v);
7872 if(basic_istream_char_sentry_create(this, FALSE)) {
7873 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7874 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
7875 istreambuf_iterator_char first={0}, last={0};
7877 first.strbuf = strbuf;
7878 num_get_char_get_bool(numget, &last, first, last, &base->base, &state, v);
7880 basic_istream_char_sentry_destroy(this);
7882 basic_ios_char_setstate(base, state);
7883 return this;
7886 /* ??$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 */
7887 /* ??$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 */
7888 basic_istream_char* __cdecl basic_istream_char_getline_bstr_delim(
7889 basic_istream_char *istream, basic_string_char *str, char delim)
7891 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
7892 IOSB_iostate state = IOSTATE_goodbit;
7893 int c = (unsigned char)delim;
7895 TRACE("(%p %p %s)\n", istream, str, debugstr_an(&delim, 1));
7897 MSVCP_basic_string_char_clear(str);
7898 if(basic_istream_char_sentry_create(istream, TRUE)) {
7899 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7901 c = basic_streambuf_char_sgetc(strbuf);
7902 for(; c!=(unsigned char)delim && c!=EOF; c = basic_streambuf_char_snextc(strbuf))
7903 MSVCP_basic_string_char_append_ch(str, c);
7904 if(c==EOF) state |= IOSTATE_eofbit;
7905 else if(c==(unsigned char)delim) basic_streambuf_char_sbumpc(strbuf);
7907 if(!MSVCP_basic_string_char_length(str) && c!=(unsigned char)delim) state |= IOSTATE_failbit;
7909 basic_istream_char_sentry_destroy(istream);
7911 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream), state);
7912 return istream;
7915 /* ??$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 */
7916 /* ??$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 */
7917 basic_istream_char* __cdecl basic_istream_char_getline_bstr(
7918 basic_istream_char *istream, basic_string_char *str)
7920 return basic_istream_char_getline_bstr_delim(istream, str, '\n');
7923 /* ??$?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 */
7924 /* ??$?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 */
7925 basic_istream_char* __cdecl basic_istream_char_read_bstr(
7926 basic_istream_char *istream, basic_string_char *str)
7928 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
7929 IOSB_iostate state = IOSTATE_failbit;
7930 int c = '\n';
7932 TRACE("(%p %p)\n", istream, str);
7934 if(basic_istream_char_sentry_create(istream, FALSE)) {
7935 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(base->strbuf));
7936 size_t count = ios_base_width_get(&base->base);
7938 if(!count)
7939 count = -1;
7941 MSVCP_basic_string_char_clear(str);
7943 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
7944 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
7945 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
7946 state = IOSTATE_goodbit;
7947 MSVCP_basic_string_char_append_ch(str, c);
7950 basic_istream_char_sentry_destroy(istream);
7952 ios_base_width_set(&base->base, 0);
7953 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7954 return istream;
7957 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAD@Z */
7958 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAD@Z */
7959 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAC@Z */
7960 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAC@Z */
7961 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAE@Z */
7962 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAE@Z */
7963 basic_istream_char* __cdecl basic_istream_char_read_str(basic_istream_char *istream, char *str)
7965 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
7966 IOSB_iostate state = IOSTATE_failbit;
7967 int c = '\n';
7969 TRACE("(%p %p)\n", istream, str);
7971 if(basic_istream_char_sentry_create(istream, FALSE)) {
7972 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(base->strbuf));
7973 size_t count = ios_base_width_get(&base->base)-1;
7975 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
7976 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
7977 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
7978 state = IOSTATE_goodbit;
7979 *str++ = c;
7982 basic_istream_char_sentry_destroy(istream);
7984 *str = 0;
7985 ios_base_width_set(&base->base, 0);
7986 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7987 return istream;
7990 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAD@Z */
7991 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAD@Z */
7992 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAC@Z */
7993 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAC@Z */
7994 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAE@Z */
7995 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAE@Z */
7996 basic_istream_char* __cdecl basic_istream_char_read_ch(basic_istream_char *istream, char *ch)
7998 IOSB_iostate state = IOSTATE_failbit;
7999 int c = 0;
8001 TRACE("(%p %p)\n", istream, ch);
8003 if(basic_istream_char_sentry_create(istream, FALSE)) {
8004 c = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(
8005 basic_istream_char_get_basic_ios(istream)));
8006 if(c != EOF) {
8007 state = IOSTATE_goodbit;
8008 *ch = c;
8011 basic_istream_char_sentry_destroy(istream);
8013 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream),
8014 state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8015 return istream;
8018 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
8019 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
8020 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_streambuf, 8)
8021 basic_istream_char* __thiscall basic_istream_char_read_streambuf(
8022 basic_istream_char *this, basic_streambuf_char *streambuf)
8024 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8025 IOSB_iostate state = IOSTATE_failbit;
8026 int c = '\n';
8028 TRACE("(%p %p)\n", this, streambuf);
8030 if(basic_istream_char_sentry_create(this, FALSE)) {
8031 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base)); c!=EOF;
8032 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base))) {
8033 state = IOSTATE_goodbit;
8034 if(basic_streambuf_char_sputc(streambuf, c) == EOF)
8035 break;
8038 basic_istream_char_sentry_destroy(this);
8040 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8041 return this;
8044 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
8045 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
8046 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func, 8)
8047 basic_istream_char* __thiscall basic_istream_char_read_func(basic_istream_char *this,
8048 basic_istream_char* (__cdecl *pfunc)(basic_istream_char*))
8050 TRACE("(%p %p)\n", this, pfunc);
8051 pfunc(this);
8052 return this;
8055 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
8056 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
8057 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_basic_ios, 8)
8058 basic_istream_char* __thiscall basic_istream_char_read_func_basic_ios(basic_istream_char *this,
8059 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
8061 TRACE("(%p %p)\n", this, pfunc);
8062 pfunc(basic_istream_char_get_basic_ios(this));
8063 return this;
8066 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
8067 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
8068 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_ios_base, 8)
8069 basic_istream_char* __thiscall basic_istream_char_read_func_ios_base(basic_istream_char *this,
8070 ios_base* (__cdecl *pfunc)(ios_base*))
8072 TRACE("(%p %p)\n", this, pfunc);
8073 pfunc(&basic_istream_char_get_basic_ios(this)->base);
8074 return this;
8077 /* ??$?5MDU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$complex@M@0@@Z */
8078 /* ??$?5MDU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$complex@M@0@@Z */
8079 basic_istream_char* __cdecl basic_istream_char_read_complex_float(basic_istream_char *this, complex_float *v)
8081 float r;
8082 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8084 TRACE("(%p %p)\n", this, v);
8086 ws_basic_istream_char(this);
8087 if(basic_istream_char_peek(this) == '(') {
8088 char c;
8089 basic_istream_char_get(this);
8090 basic_istream_char_read_float(this, &r);
8092 if(ios_base_fail(&base->base))
8093 return this;
8095 ws_basic_istream_char(this);
8096 c = basic_istream_char_peek(this);
8097 if(c == ',') {
8098 float i;
8099 basic_istream_char_get(this);
8100 basic_istream_char_read_float(this, &i);
8102 if(ios_base_fail(&base->base))
8103 return this;
8105 ws_basic_istream_char(this);
8106 c = basic_istream_char_peek(this);
8107 if(c == ')') { /* supported format: (real, imag) */
8108 basic_istream_char_get(this);
8109 v->real = r;
8110 v->imag = i;
8111 }else {
8112 basic_ios_char_setstate(base, IOSTATE_failbit);
8113 return this;
8115 }else if(c == ')') { /* supported format: (real) */
8116 basic_istream_char_get(this);
8117 v->real = r;
8118 v->imag = 0;
8119 }else {
8120 basic_ios_char_setstate(base, IOSTATE_failbit);
8121 return this;
8123 }else { /* supported format: real */
8124 basic_istream_char_read_float(this, &r);
8126 if(ios_base_fail(&base->base))
8127 return this;
8129 v->real = r;
8130 v->imag = 0;
8133 return this;
8136 /* ??$?5NDU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$complex@N@0@@Z */
8137 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$complex@N@0@@Z */
8138 basic_istream_char* __cdecl basic_istream_char_read_complex_double(basic_istream_char *this, complex_double *v)
8140 double r;
8141 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8143 TRACE("(%p %p)\n", this, v);
8145 ws_basic_istream_char(this);
8146 if(basic_istream_char_peek(this) == '(') {
8147 char c;
8148 basic_istream_char_get(this);
8149 basic_istream_char_read_double(this, &r);
8151 if(ios_base_fail(&base->base))
8152 return this;
8154 ws_basic_istream_char(this);
8155 c = basic_istream_char_peek(this);
8156 if(c == ',') {
8157 double i;
8158 basic_istream_char_get(this);
8159 basic_istream_char_read_double(this, &i);
8161 if(ios_base_fail(&base->base))
8162 return this;
8164 ws_basic_istream_char(this);
8165 c = basic_istream_char_peek(this);
8166 if(c == ')') { /* supported format: (real, imag) */
8167 basic_istream_char_get(this);
8168 v->real = r;
8169 v->imag = i;
8170 }else {
8171 basic_ios_char_setstate(base, IOSTATE_failbit);
8172 return this;
8174 }else if(c == ')') { /* supported format: (real) */
8175 basic_istream_char_get(this);
8176 v->real = r;
8177 v->imag = 0;
8178 }else {
8179 basic_ios_char_setstate(base, IOSTATE_failbit);
8180 return this;
8182 }else { /* supported format: real */
8183 basic_istream_char_read_double(this, &r);
8185 if(ios_base_fail(&base->base))
8186 return this;
8188 v->real = r;
8189 v->imag = 0;
8192 return this;
8195 /* ??$?5ODU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$complex@O@0@@Z */
8196 /* ??$?5ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAV?$complex@O@0@@Z */
8197 basic_istream_char* __cdecl basic_istream_char_read_complex_ldouble(basic_istream_char *this, complex_double *v)
8199 double r;
8200 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8202 TRACE("(%p %p)\n", this, v);
8204 ws_basic_istream_char(this);
8205 if(basic_istream_char_peek(this) == '(') {
8206 char c;
8207 basic_istream_char_get(this);
8208 basic_istream_char_read_ldouble(this, &r);
8210 if(ios_base_fail(&base->base))
8211 return this;
8213 ws_basic_istream_char(this);
8214 c = basic_istream_char_peek(this);
8215 if(c == ',') {
8216 double i;
8217 basic_istream_char_get(this);
8218 basic_istream_char_read_ldouble(this, &i);
8220 if(ios_base_fail(&base->base))
8221 return this;
8223 ws_basic_istream_char(this);
8224 c = basic_istream_char_peek(this);
8225 if(c == ')') { /* supported format: (real, imag) */
8226 basic_istream_char_get(this);
8227 v->real = r;
8228 v->imag = i;
8229 }else {
8230 basic_ios_char_setstate(base, IOSTATE_failbit);
8231 return this;
8233 }else if(c == ')') { /* supported format: (real) */
8234 basic_istream_char_get(this);
8235 v->real = r;
8236 v->imag = 0;
8237 }else {
8238 basic_ios_char_setstate(base, IOSTATE_failbit);
8239 return this;
8241 }else { /* supported format: real */
8242 basic_istream_char_read_ldouble(this, &r);
8244 if(ios_base_fail(&base->base))
8245 return this;
8247 v->real = r;
8248 v->imag = 0;
8251 return this;
8254 /* ?swap@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */
8255 /* ?swap@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */
8256 DEFINE_THISCALL_WRAPPER(basic_istream_char_swap, 8)
8257 void __thiscall basic_istream_char_swap(basic_istream_char *this, basic_istream_char *r)
8259 TRACE("(%p %p)\n", this, r);
8261 if(this == r)
8262 return;
8264 basic_ios_char_swap(basic_istream_char_get_basic_ios(this),
8265 basic_istream_char_get_basic_ios(r));
8266 this->count ^= r->count;
8267 r->count ^= this->count;
8268 this->count ^= r->count;
8271 /* Caution: basic_istream uses virtual inheritance. */
8272 static inline basic_ios_wchar* basic_istream_short_get_basic_ios(basic_istream_wchar *this)
8274 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
8277 static inline basic_ios_wchar* basic_istream_short_to_basic_ios(basic_istream_wchar *ptr)
8279 return (basic_ios_wchar*)((char*)ptr+basic_istream_short_vbtable[1]);
8282 static inline basic_istream_wchar* basic_istream_short_from_basic_ios(basic_ios_wchar *ptr)
8284 return (basic_istream_wchar*)((char*)ptr-basic_istream_short_vbtable[1]);
8287 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
8288 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
8289 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_init, 20)
8290 basic_istream_wchar* __thiscall basic_istream_short_ctor_init(basic_istream_wchar *this,
8291 basic_streambuf_wchar *strbuf, bool isstd, bool noinit, bool virt_init)
8293 basic_ios_wchar *base;
8295 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
8297 if(virt_init) {
8298 this->vbtable = basic_istream_short_vbtable;
8299 base = basic_istream_short_get_basic_ios(this);
8300 basic_ios_wchar_ctor(base);
8301 }else {
8302 base = basic_istream_short_get_basic_ios(this);
8305 base->base.vtable = &basic_istream_short_vtable;
8306 this->count = 0;
8307 if(!noinit)
8308 basic_ios_wchar_init(base, strbuf, isstd);
8309 return this;
8312 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
8313 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
8314 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor, 16)
8315 basic_istream_wchar* __thiscall basic_istream_short_ctor(basic_istream_wchar *this,
8316 basic_streambuf_wchar *strbuf, bool isstd, bool virt_init)
8318 return basic_istream_short_ctor_init(this, strbuf, isstd, FALSE, virt_init);
8321 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
8322 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
8323 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_uninitialized, 12)
8324 basic_istream_wchar* __thiscall basic_istream_short_ctor_uninitialized(
8325 basic_istream_wchar *this, int uninitialized, bool virt_init)
8327 basic_ios_wchar *base;
8329 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
8331 if(virt_init) {
8332 this->vbtable = basic_istream_short_vbtable;
8333 base = basic_istream_short_get_basic_ios(this);
8334 basic_ios_wchar_ctor(base);
8335 }else {
8336 base = basic_istream_short_get_basic_ios(this);
8339 base->base.vtable = &basic_istream_short_vtable;
8340 ios_base_Addstd(&base->base);
8341 return this;
8344 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UAE@XZ */
8345 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
8346 DEFINE_THISCALL_WRAPPER(basic_istream_short_dtor, 4)
8347 void __thiscall basic_istream_short_dtor(basic_ios_wchar *base)
8349 basic_istream_wchar *this = basic_istream_short_from_basic_ios(base);
8351 /* don't destroy virtual base here */
8352 TRACE("(%p)\n", this);
8355 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
8356 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
8357 DEFINE_THISCALL_WRAPPER(basic_istream_short_vbase_dtor, 4)
8358 void __thiscall basic_istream_short_vbase_dtor(basic_istream_wchar *this)
8360 TRACE("(%p)\n", this);
8361 basic_istream_short_dtor(basic_istream_short_to_basic_ios(this));
8362 basic_ios_wchar_dtor(basic_istream_short_get_basic_ios(this));
8365 DEFINE_THISCALL_WRAPPER(basic_istream_short_vector_dtor, 8)
8366 basic_istream_wchar* __thiscall basic_istream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
8368 basic_istream_wchar *this = basic_istream_short_from_basic_ios(base);
8370 TRACE("(%p %x)\n", this, flags);
8372 if(flags & 2) {
8373 /* we have an array, with the number of elements stored before the first object */
8374 INT_PTR i, *ptr = (INT_PTR *)this-1;
8376 for(i=*ptr-1; i>=0; i--)
8377 basic_istream_short_vbase_dtor(this+i);
8378 operator_delete(ptr);
8379 } else {
8380 basic_istream_short_vbase_dtor(this);
8381 if(flags & 1)
8382 operator_delete(this);
8385 return this;
8388 /* ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
8389 /* ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
8390 DEFINE_THISCALL_WRAPPER(basic_istream_short__Ipfx, 8)
8391 bool __thiscall basic_istream_short__Ipfx(basic_istream_wchar *this, bool noskip)
8393 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8395 TRACE("(%p %d)\n", this, noskip);
8397 if(ios_base_good(&base->base)) {
8398 if(basic_ios_wchar_tie_get(base))
8399 basic_ostream_short_flush(basic_ios_wchar_tie_get(base));
8401 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
8402 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8403 const ctype_wchar *ctype = ctype_wchar_use_facet(IOS_LOCALE(base->strbuf));
8404 int ch;
8406 for(ch = basic_streambuf_wchar_sgetc(strbuf); ;
8407 ch = basic_streambuf_wchar_snextc(strbuf)) {
8408 if(ch==WEOF || !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, ch))
8409 break;
8414 if(!ios_base_good(&base->base)) {
8415 basic_ios_wchar_setstate(base, IOSTATE_failbit);
8416 return FALSE;
8418 return TRUE;
8421 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
8422 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
8423 DEFINE_THISCALL_WRAPPER(basic_istream_short_ipfx, 8)
8424 bool __thiscall basic_istream_short_ipfx(basic_istream_wchar *this, bool noskip)
8426 return basic_istream_short__Ipfx(this, noskip);
8429 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
8430 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
8431 DEFINE_THISCALL_WRAPPER(basic_istream_short_isfx, 4)
8432 void __thiscall basic_istream_short_isfx(basic_istream_wchar *this)
8434 TRACE("(%p)\n", this);
8437 static BOOL basic_istream_short_sentry_create(basic_istream_wchar *istr, bool noskip)
8439 basic_ios_wchar *base = basic_istream_short_get_basic_ios(istr);
8441 if(basic_ios_wchar_rdbuf_get(base))
8442 basic_streambuf_wchar__Lock(base->strbuf);
8444 return basic_istream_short_ipfx(istr, noskip);
8447 static void basic_istream_short_sentry_destroy(basic_istream_wchar *istr)
8449 basic_ios_wchar *base = basic_istream_short_get_basic_ios(istr);
8451 if(basic_ios_wchar_rdbuf_get(base))
8452 basic_streambuf_wchar__Unlock(base->strbuf);
8455 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBEHXZ */
8456 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QEBA_JXZ */
8457 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBA_JXZ */
8458 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBE_JXZ */
8459 DEFINE_THISCALL_WRAPPER(basic_istream_short_gcount, 4)
8460 streamsize __thiscall basic_istream_short_gcount(const basic_istream_wchar *this)
8462 TRACE("(%p)\n", this);
8463 return this->count;
8466 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
8467 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
8468 DEFINE_THISCALL_WRAPPER(basic_istream_short_get, 4)
8469 unsigned short __thiscall basic_istream_short_get(basic_istream_wchar *this)
8471 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8472 int ret;
8474 TRACE("(%p)\n", this);
8476 this->count = 0;
8478 if(!basic_istream_short_sentry_create(this, TRUE)) {
8479 basic_istream_short_sentry_destroy(this);
8480 return WEOF;
8483 ret = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(base));
8484 basic_istream_short_sentry_destroy(this);
8485 if(ret == WEOF)
8486 basic_ios_wchar_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
8487 else
8488 this->count++;
8490 return ret;
8493 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAG@Z */
8494 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAG@Z */
8495 DEFINE_THISCALL_WRAPPER(basic_istream_short_get_ch, 8)
8496 basic_istream_wchar* __thiscall basic_istream_short_get_ch(basic_istream_wchar *this, wchar_t *ch)
8498 unsigned short ret;
8500 TRACE("(%p %p)\n", this, ch);
8502 ret = basic_istream_short_get(this);
8503 if(ret != WEOF)
8504 *ch = (wchar_t)ret;
8505 return this;
8508 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
8509 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
8510 DEFINE_THISCALL_WRAPPER(basic_istream_short_get_str_delim, 16)
8511 basic_istream_wchar* __thiscall basic_istream_short_get_str_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
8513 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8514 unsigned short ch = delim;
8516 TRACE("(%p %p %Id %s)\n", this, str, count, debugstr_wn(&delim, 1));
8518 this->count = 0;
8520 if(basic_istream_short_sentry_create(this, TRUE)) {
8521 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8523 for(ch = basic_streambuf_wchar_sgetc(strbuf); count>1;
8524 ch = basic_streambuf_wchar_snextc(strbuf)) {
8525 if(ch==WEOF || ch==delim)
8526 break;
8528 *str++ = ch;
8529 this->count++;
8530 count--;
8533 basic_istream_short_sentry_destroy(this);
8535 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
8536 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8537 if(count > 0)
8538 *str = 0;
8539 return this;
8542 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
8543 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
8544 DEFINE_THISCALL_WRAPPER(basic_istream_short_get_str, 12)
8545 basic_istream_wchar* __thiscall basic_istream_short_get_str(basic_istream_wchar *this, wchar_t *str, streamsize count)
8547 return basic_istream_short_get_str_delim(this, str, count, '\n');
8550 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
8551 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
8552 DEFINE_THISCALL_WRAPPER(basic_istream_short_get_streambuf_delim, 12)
8553 basic_istream_wchar* __thiscall basic_istream_short_get_streambuf_delim(basic_istream_wchar *this, basic_streambuf_wchar *strbuf, wchar_t delim)
8555 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8556 unsigned short ch = delim;
8558 TRACE("(%p %p %s)\n", this, strbuf, debugstr_wn(&delim, 1));
8560 this->count = 0;
8562 if(basic_istream_short_sentry_create(this, TRUE)) {
8563 basic_streambuf_wchar *strbuf_read = basic_ios_wchar_rdbuf_get(base);
8565 for(ch = basic_streambuf_wchar_sgetc(strbuf_read); ;
8566 ch = basic_streambuf_wchar_snextc(strbuf_read)) {
8567 if(ch==WEOF || ch==delim)
8568 break;
8570 if(basic_streambuf_wchar_sputc(strbuf, ch) == WEOF)
8571 break;
8572 this->count++;
8575 basic_istream_short_sentry_destroy(this);
8577 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
8578 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8579 return this;
8582 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
8583 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
8584 DEFINE_THISCALL_WRAPPER(basic_istream_short_get_streambuf, 8)
8585 basic_istream_wchar* __thiscall basic_istream_short_get_streambuf(basic_istream_wchar *this, basic_streambuf_wchar *strbuf)
8587 return basic_istream_short_get_streambuf_delim(this, strbuf, '\n');
8590 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
8591 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
8592 DEFINE_THISCALL_WRAPPER(basic_istream_short_getline_delim, 16)
8593 basic_istream_wchar* __thiscall basic_istream_short_getline_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
8595 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8596 unsigned short ch = delim;
8598 TRACE("(%p %p %Id %s)\n", this, str, count, debugstr_wn(&delim, 1));
8600 this->count = 0;
8602 if(basic_istream_short_sentry_create(this, TRUE) && count>0) {
8603 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8605 while(count > 1) {
8606 ch = basic_streambuf_wchar_sbumpc(strbuf);
8608 if(ch==WEOF || ch==delim)
8609 break;
8611 *str++ = ch;
8612 this->count++;
8613 count--;
8616 if(ch == delim)
8617 this->count++;
8618 else if(ch != WEOF) {
8619 ch = basic_streambuf_wchar_sgetc(strbuf);
8621 if(ch == delim) {
8622 basic_streambuf_wchar__Gninc(strbuf);
8623 this->count++;
8627 basic_istream_short_sentry_destroy(this);
8629 basic_ios_wchar_setstate(base, (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
8630 (!this->count || (ch!=delim && ch!=WEOF) ? IOSTATE_failbit : IOSTATE_goodbit));
8631 if(count > 0)
8632 *str = 0;
8633 return this;
8636 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
8637 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
8638 DEFINE_THISCALL_WRAPPER(basic_istream_short_getline, 12)
8639 basic_istream_wchar* __thiscall basic_istream_short_getline(basic_istream_wchar *this, wchar_t *str, streamsize count)
8641 return basic_istream_short_getline_delim(this, str, count, '\n');
8644 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@HG@Z */
8645 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JG@Z */
8646 DEFINE_THISCALL_WRAPPER(basic_istream_short_ignore, 12)
8647 basic_istream_wchar* __thiscall basic_istream_short_ignore(basic_istream_wchar *this, streamsize count, unsigned short delim)
8649 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8650 unsigned short ch = delim;
8651 unsigned int state;
8653 TRACE("(%p %Id %d)\n", this, count, delim);
8655 this->count = 0;
8657 if(basic_istream_short_sentry_create(this, TRUE)) {
8658 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8659 state = IOSTATE_goodbit;
8661 while(count > 0) {
8662 ch = basic_streambuf_wchar_sbumpc(strbuf);
8664 if(ch==WEOF) {
8665 state = IOSTATE_eofbit;
8666 break;
8669 if(ch==delim)
8670 break;
8672 this->count++;
8673 if(count != INT_MAX)
8674 count--;
8676 }else
8677 state = IOSTATE_failbit;
8678 basic_istream_short_sentry_destroy(this);
8680 basic_ios_wchar_setstate(base, state);
8681 return this;
8684 /* ?ws@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@1@AAV21@@Z */
8685 /* ?ws@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
8686 basic_istream_wchar* __cdecl ws_basic_istream_short(basic_istream_wchar *istream)
8688 basic_ios_wchar *base = basic_istream_short_get_basic_ios(istream);
8689 unsigned short ch = '\n';
8691 TRACE("(%p)\n", istream);
8693 if(basic_istream_short_sentry_create(istream, TRUE)) {
8694 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8695 const ctype_wchar *ctype = ctype_wchar_use_facet(IOS_LOCALE(strbuf));
8697 for(ch = basic_streambuf_wchar_sgetc(strbuf); ctype_wchar_is_ch(ctype, _SPACE, ch);
8698 ch = basic_streambuf_wchar_snextc(strbuf)) {
8699 if(ch == WEOF)
8700 break;
8703 basic_istream_short_sentry_destroy(istream);
8705 if(ch == WEOF)
8706 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
8707 return istream;
8710 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
8711 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
8712 DEFINE_THISCALL_WRAPPER(basic_istream_short_peek, 4)
8713 unsigned short __thiscall basic_istream_short_peek(basic_istream_wchar *this)
8715 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8716 unsigned short ret = WEOF;
8718 TRACE("(%p)\n", this);
8720 this->count = 0;
8722 if(basic_istream_short_sentry_create(this, TRUE))
8723 ret = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
8724 basic_istream_short_sentry_destroy(this);
8726 if (ret == WEOF)
8727 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
8729 return ret;
8732 /* ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGIH@Z */
8733 /* ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_K_J@Z */
8734 DEFINE_THISCALL_WRAPPER(basic_istream_short__Read_s, 16)
8735 basic_istream_wchar* __thiscall basic_istream_short__Read_s(basic_istream_wchar *this, wchar_t *str, size_t size, streamsize count)
8737 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8738 IOSB_iostate state = IOSTATE_goodbit;
8740 TRACE("(%p %p %Iu %Id)\n", this, str, size, count);
8742 if(basic_istream_short_sentry_create(this, TRUE)) {
8743 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8745 this->count = basic_streambuf_wchar__Sgetn_s(strbuf, str, size, count);
8746 if(this->count != count)
8747 state |= IOSTATE_failbit | IOSTATE_eofbit;
8748 }else {
8749 this->count = 0;
8751 basic_istream_short_sentry_destroy(this);
8753 basic_ios_wchar_setstate(base, state);
8754 return this;
8757 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
8758 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
8759 DEFINE_THISCALL_WRAPPER(basic_istream_short_read, 12)
8760 basic_istream_wchar* __thiscall basic_istream_short_read(basic_istream_wchar *this, wchar_t *str, streamsize count)
8762 return basic_istream_short__Read_s(this, str, -1, count);
8765 /* ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
8766 /* ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
8767 DEFINE_THISCALL_WRAPPER(basic_istream_short__Readsome_s, 16)
8768 streamsize __thiscall basic_istream_short__Readsome_s(basic_istream_wchar *this, wchar_t *str, size_t size, streamsize count)
8770 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8771 IOSB_iostate state = IOSTATE_goodbit;
8773 TRACE("(%p %p %Iu %Id)\n", this, str, size, count);
8775 this->count = 0;
8777 if(basic_istream_short_sentry_create(this, TRUE)) {
8778 streamsize avail = basic_streambuf_wchar_in_avail(basic_ios_wchar_rdbuf_get(base));
8779 if(avail > count)
8780 avail = count;
8782 if(avail == -1)
8783 state |= IOSTATE_eofbit;
8784 else if(avail > 0)
8785 basic_istream_short__Read_s(this, str, size, avail);
8786 }else {
8787 state |= IOSTATE_failbit;
8789 basic_istream_short_sentry_destroy(this);
8791 basic_ios_wchar_setstate(base, state);
8792 return this->count;
8795 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
8796 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
8797 DEFINE_THISCALL_WRAPPER(basic_istream_short_readsome, 12)
8798 streamsize __thiscall basic_istream_short_readsome(basic_istream_wchar *this, wchar_t *str, streamsize count)
8800 return basic_istream_short__Readsome_s(this, str, count, count);
8803 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
8804 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
8805 DEFINE_THISCALL_WRAPPER(basic_istream_short_putback, 8)
8806 basic_istream_wchar* __thiscall basic_istream_short_putback(basic_istream_wchar *this, wchar_t ch)
8808 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8809 IOSB_iostate state = IOSTATE_goodbit;
8811 TRACE("(%p %c)\n", this, ch);
8813 this->count = 0;
8815 if(basic_istream_short_sentry_create(this, TRUE)) {
8816 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8818 if(!ios_base_good(&base->base))
8819 state |= IOSTATE_failbit;
8820 else if(!strbuf || basic_streambuf_wchar_sputbackc(strbuf, ch)==WEOF)
8821 state |= IOSTATE_badbit;
8823 basic_istream_short_sentry_destroy(this);
8825 basic_ios_wchar_setstate(base, state);
8826 return this;
8829 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
8830 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
8831 DEFINE_THISCALL_WRAPPER(basic_istream_short_unget, 4)
8832 basic_istream_wchar* __thiscall basic_istream_short_unget(basic_istream_wchar *this)
8834 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8835 IOSB_iostate state = IOSTATE_goodbit;
8837 TRACE("(%p)\n", this);
8839 this->count = 0;
8841 if(basic_istream_short_sentry_create(this, TRUE)) {
8842 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8844 if(!ios_base_good(&base->base))
8845 state |= IOSTATE_failbit;
8846 else if(!strbuf || basic_streambuf_wchar_sungetc(strbuf)==WEOF)
8847 state |= IOSTATE_badbit;
8849 basic_istream_short_sentry_destroy(this);
8851 basic_ios_wchar_setstate(base, state);
8852 return this;
8855 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHXZ */
8856 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAHXZ */
8857 DEFINE_THISCALL_WRAPPER(basic_istream_short_sync, 4)
8858 int __thiscall basic_istream_short_sync(basic_istream_wchar *this)
8860 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8861 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8863 TRACE("(%p)\n", this);
8865 if(!strbuf)
8866 return -1;
8868 if(basic_istream_short_sentry_create(this, TRUE)) {
8869 if(basic_streambuf_wchar_pubsync(strbuf) != -1) {
8870 basic_istream_short_sentry_destroy(this);
8871 return 0;
8874 basic_istream_short_sentry_destroy(this);
8876 basic_ios_wchar_setstate(base, IOSTATE_badbit);
8877 return -1;
8880 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
8881 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
8882 DEFINE_THISCALL_WRAPPER(basic_istream_short_tellg, 8)
8883 fpos_int* __thiscall basic_istream_short_tellg(basic_istream_wchar *this, fpos_int *ret)
8885 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8887 TRACE("(%p %p)\n", this, ret);
8889 if(ios_base_fail(&base->base)) {
8890 ret->off = -1;
8891 ret->pos = 0;
8892 ret->state = 0;
8893 return ret;
8896 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
8897 ret, 0, SEEKDIR_cur, OPENMODE_in);
8899 return ret;
8902 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@JW4seekdir@ios_base@2@@Z */
8903 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JW4seekdir@ios_base@2@@Z */
8904 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
8905 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
8906 DEFINE_THISCALL_WRAPPER(basic_istream_short_seekg, 12)
8907 basic_istream_wchar* __thiscall basic_istream_short_seekg(basic_istream_wchar *this, streamoff off, int dir)
8909 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8911 TRACE("(%p %Id %d)\n", this, off, dir);
8913 if(!ios_base_fail(&base->base)) {
8914 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8915 fpos_int ret;
8917 basic_streambuf_wchar_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
8920 return this;
8923 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
8924 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
8925 DEFINE_THISCALL_WRAPPER(basic_istream_short_seekg_fpos, 28)
8926 basic_istream_wchar* __thiscall basic_istream_short_seekg_fpos(basic_istream_wchar *this, fpos_int pos)
8928 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8930 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
8932 if(!ios_base_fail(&base->base)) {
8933 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8934 fpos_int ret;
8936 basic_streambuf_wchar_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
8939 return this;
8942 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAF@Z */
8943 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAF@Z */
8944 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_short, 8)
8945 basic_istream_wchar* __thiscall basic_istream_short_read_short(basic_istream_wchar *this, short *v)
8947 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8948 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
8949 int state = IOSTATE_goodbit;
8951 TRACE("(%p %p)\n", this, v);
8953 if(basic_istream_short_sentry_create(this, FALSE)) {
8954 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8955 istreambuf_iterator_wchar first={0}, last={0};
8956 LONG tmp;
8958 first.strbuf = strbuf;
8959 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, &tmp);
8961 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
8962 *v = tmp;
8963 else
8964 state |= IOSTATE_failbit;
8966 basic_istream_short_sentry_destroy(this);
8968 basic_ios_wchar_setstate(base, state);
8969 return this;
8972 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAH@Z */
8973 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAH@Z */
8974 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int, 8)
8975 basic_istream_wchar* __thiscall basic_istream_short_read_int(basic_istream_wchar *this, int *v)
8977 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8978 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
8979 int state = IOSTATE_goodbit;
8981 TRACE("(%p %p)\n", this, v);
8983 if(basic_istream_short_sentry_create(this, FALSE)) {
8984 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8985 istreambuf_iterator_wchar first={0}, last={0};
8987 first.strbuf = strbuf;
8988 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, (LONG*)v);
8990 basic_istream_short_sentry_destroy(this);
8992 basic_ios_wchar_setstate(base, state);
8993 return this;
8996 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAI@Z */
8997 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAI@Z */
8998 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint, 8)
8999 basic_istream_wchar* __thiscall basic_istream_short_read_uint(basic_istream_wchar *this, unsigned int *v)
9001 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
9002 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
9003 int state = IOSTATE_goodbit;
9005 TRACE("(%p %p)\n", this, v);
9007 if(basic_istream_short_sentry_create(this, FALSE)) {
9008 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9009 istreambuf_iterator_wchar first={0}, last={0};
9011 first.strbuf = strbuf;
9012 num_get_wchar_get_uint(numget, &last, first, last, &base->base, &state, v);
9014 basic_istream_short_sentry_destroy(this);
9016 basic_ios_wchar_setstate(base, state);
9017 return this;
9020 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAJ@Z */
9021 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAJ@Z */
9022 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_long, 8)
9023 basic_istream_wchar* __thiscall basic_istream_short_read_long(basic_istream_wchar *this, LONG *v)
9025 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
9026 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
9027 int state = IOSTATE_goodbit;
9029 TRACE("(%p %p)\n", this, v);
9031 if(basic_istream_short_sentry_create(this, FALSE)) {
9032 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9033 istreambuf_iterator_wchar first={0}, last={0};
9035 first.strbuf = strbuf;
9036 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v);
9038 basic_istream_short_sentry_destroy(this);
9040 basic_ios_wchar_setstate(base, state);
9041 return this;
9044 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAK@Z */
9045 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAK@Z */
9046 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ulong, 8)
9047 basic_istream_wchar* __thiscall basic_istream_short_read_ulong(basic_istream_wchar *this, ULONG *v)
9049 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
9050 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
9051 int state = IOSTATE_goodbit;
9053 TRACE("(%p %p)\n", this, v);
9055 if(basic_istream_short_sentry_create(this, FALSE)) {
9056 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9057 istreambuf_iterator_wchar first={0}, last={0};
9059 first.strbuf = strbuf;
9060 num_get_wchar_get_ulong(numget, &last, first, last, &base->base, &state, v);
9062 basic_istream_short_sentry_destroy(this);
9064 basic_ios_wchar_setstate(base, state);
9065 return this;
9068 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAM@Z */
9069 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAM@Z */
9070 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_float, 8)
9071 basic_istream_wchar* __thiscall basic_istream_short_read_float(basic_istream_wchar *this, float *v)
9073 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
9074 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
9075 int state = IOSTATE_goodbit;
9077 TRACE("(%p %p)\n", this, v);
9079 if(basic_istream_short_sentry_create(this, FALSE)) {
9080 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9081 istreambuf_iterator_wchar first={0}, last={0};
9083 first.strbuf = strbuf;
9084 num_get_wchar_get_float(numget, &last, first, last, &base->base, &state, v);
9086 basic_istream_short_sentry_destroy(this);
9088 basic_ios_wchar_setstate(base, state);
9089 return this;
9092 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAN@Z */
9093 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAN@Z */
9094 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_double, 8)
9095 basic_istream_wchar* __thiscall basic_istream_short_read_double(basic_istream_wchar *this, double *v)
9097 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
9098 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
9099 int state = IOSTATE_goodbit;
9101 TRACE("(%p %p)\n", this, v);
9103 if(basic_istream_short_sentry_create(this, FALSE)) {
9104 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9105 istreambuf_iterator_wchar first={0}, last={0};
9107 first.strbuf = strbuf;
9108 num_get_wchar_get_double(numget, &last, first, last, &base->base, &state, v);
9110 basic_istream_short_sentry_destroy(this);
9112 basic_ios_wchar_setstate(base, state);
9113 return this;
9116 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAO@Z */
9117 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAO@Z */
9118 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ldouble, 8)
9119 basic_istream_wchar* __thiscall basic_istream_short_read_ldouble(basic_istream_wchar *this, double *v)
9121 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
9122 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
9123 int state = IOSTATE_goodbit;
9125 TRACE("(%p %p)\n", this, v);
9127 if(basic_istream_short_sentry_create(this, FALSE)) {
9128 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9129 istreambuf_iterator_wchar first={0}, last={0};
9131 first.strbuf = strbuf;
9132 num_get_wchar_get_ldouble(numget, &last, first, last, &base->base, &state, v);
9134 basic_istream_short_sentry_destroy(this);
9136 basic_ios_wchar_setstate(base, state);
9137 return this;
9140 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAPAX@Z */
9141 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
9142 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ptr, 8)
9143 basic_istream_wchar* __thiscall basic_istream_short_read_ptr(basic_istream_wchar *this, void **v)
9145 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
9146 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
9147 int state = IOSTATE_goodbit;
9149 TRACE("(%p %p)\n", this, v);
9151 if(basic_istream_short_sentry_create(this, FALSE)) {
9152 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9153 istreambuf_iterator_wchar first={0}, last={0};
9155 first.strbuf = strbuf;
9156 num_get_wchar_get_void(numget, &last, first, last, &base->base, &state, v);
9158 basic_istream_short_sentry_destroy(this);
9160 basic_ios_wchar_setstate(base, state);
9161 return this;
9164 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_J@Z */
9165 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_J@Z */
9166 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int64, 8)
9167 basic_istream_wchar* __thiscall basic_istream_short_read_int64(basic_istream_wchar *this, __int64 *v)
9169 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
9170 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
9171 int state = IOSTATE_goodbit;
9173 TRACE("(%p %p)\n", this, v);
9175 if(basic_istream_short_sentry_create(this, FALSE)) {
9176 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9177 istreambuf_iterator_wchar first={0}, last={0};
9179 first.strbuf = strbuf;
9180 num_get_wchar_get_int64(numget, &last, first, last, &base->base, &state, v);
9182 basic_istream_short_sentry_destroy(this);
9184 basic_ios_wchar_setstate(base, state);
9185 return this;
9188 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_K@Z */
9189 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_K@Z */
9190 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint64, 8)
9191 basic_istream_wchar* __thiscall basic_istream_short_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
9193 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
9194 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
9195 int state = IOSTATE_goodbit;
9197 TRACE("(%p %p)\n", this, v);
9199 if(basic_istream_short_sentry_create(this, FALSE)) {
9200 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9201 istreambuf_iterator_wchar first={0}, last={0};
9203 first.strbuf = strbuf;
9204 num_get_wchar_get_uint64(numget, &last, first, last, &base->base, &state, v);
9206 basic_istream_short_sentry_destroy(this);
9208 basic_ios_wchar_setstate(base, state);
9209 return this;
9212 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_N@Z */
9213 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_N@Z */
9214 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_bool, 8)
9215 basic_istream_wchar* __thiscall basic_istream_short_read_bool(basic_istream_wchar *this, bool *v)
9217 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
9218 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
9219 int state = IOSTATE_goodbit;
9221 TRACE("(%p %p)\n", this, v);
9223 if(basic_istream_short_sentry_create(this, FALSE)) {
9224 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9225 istreambuf_iterator_wchar first={0}, last={0};
9227 first.strbuf = strbuf;
9228 num_get_wchar_get_bool(numget, &last, first, last, &base->base, &state, v);
9230 basic_istream_short_sentry_destroy(this);
9232 basic_ios_wchar_setstate(base, state);
9233 return this;
9236 /* ??$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 */
9237 /* ??$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 */
9238 basic_istream_wchar* __cdecl basic_istream_short_getline_bstr_delim(
9239 basic_istream_wchar *istream, basic_string_wchar *str, wchar_t delim)
9241 basic_ios_wchar *base = basic_istream_short_get_basic_ios(istream);
9242 IOSB_iostate state = IOSTATE_goodbit;
9243 int c = delim;
9245 TRACE("(%p %p %s)\n", istream, str, debugstr_wn(&delim, 1));
9247 MSVCP_basic_string_wchar_clear(str);
9248 if(basic_istream_short_sentry_create(istream, TRUE)) {
9249 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9251 c = basic_streambuf_wchar_sgetc(strbuf);
9252 for(; c!=delim && c!=WEOF; c = basic_streambuf_wchar_snextc(strbuf))
9253 MSVCP_basic_string_wchar_append_ch(str, c);
9254 if(c==delim) basic_streambuf_wchar_sbumpc(strbuf);
9255 else if(c==WEOF) state |= IOSTATE_eofbit;
9257 if(!MSVCP_basic_string_wchar_length(str) && c!=delim) state |= IOSTATE_failbit;
9259 basic_istream_short_sentry_destroy(istream);
9261 basic_ios_wchar_setstate(basic_istream_short_get_basic_ios(istream), state);
9262 return istream;
9265 /* ??$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 */
9266 /* ??$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 */
9267 basic_istream_wchar* __cdecl basic_istream_short_getline_bstr(
9268 basic_istream_wchar *istream, basic_string_wchar *str)
9270 return basic_istream_short_getline_bstr_delim(istream, str, '\n');
9273 /* ??$?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 */
9274 /* ??$?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 */
9275 basic_istream_wchar* __cdecl basic_istream_short_read_bstr(
9276 basic_istream_wchar *istream, basic_string_wchar *str)
9278 basic_ios_wchar *base = basic_istream_short_get_basic_ios(istream);
9279 const ctype_wchar *ctype = ctype_short_use_facet(IOS_LOCALE(base->strbuf));
9280 IOSB_iostate state = IOSTATE_failbit;
9281 int c = '\n';
9283 TRACE("(%p %p)\n", istream, str);
9285 if(basic_istream_short_sentry_create(istream, FALSE)) {
9286 size_t count = ios_base_width_get(&base->base);
9288 if(!count)
9289 count = -1;
9291 MSVCP_basic_string_wchar_clear(str);
9293 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
9294 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
9295 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base)), count--) {
9296 state = IOSTATE_goodbit;
9297 MSVCP_basic_string_wchar_append_ch(str, c);
9300 basic_istream_short_sentry_destroy(istream);
9302 ios_base_width_set(&base->base, 0);
9303 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9304 return istream;
9307 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@PAG@Z */
9308 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@PEAG@Z */
9309 basic_istream_wchar* __cdecl basic_istream_short_read_str(basic_istream_wchar *istream, wchar_t *str)
9311 basic_ios_wchar *base = basic_istream_short_get_basic_ios(istream);
9312 const ctype_wchar *ctype = ctype_short_use_facet(IOS_LOCALE(base->strbuf));
9313 IOSB_iostate state = IOSTATE_failbit;
9314 unsigned short c = '\n';
9316 TRACE("(%p %p)\n", istream, str);
9318 if(basic_istream_short_sentry_create(istream, FALSE)) {
9319 size_t count = ios_base_width_get(&base->base)-1;
9321 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
9322 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
9323 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base)), count--) {
9324 state = IOSTATE_goodbit;
9325 *str++ = c;
9328 basic_istream_short_sentry_destroy(istream);
9330 *str = 0;
9331 ios_base_width_set(&base->base, 0);
9332 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9333 return istream;
9336 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAG@Z */
9337 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAG@Z */
9338 basic_istream_wchar* __cdecl basic_istream_short_read_ch(basic_istream_wchar *istream, wchar_t *ch)
9340 IOSB_iostate state = IOSTATE_failbit;
9341 unsigned short c = 0;
9343 TRACE("(%p %p)\n", istream, ch);
9345 if(basic_istream_short_sentry_create(istream, FALSE)) {
9346 c = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(
9347 basic_istream_short_get_basic_ios(istream)));
9348 if(c != WEOF) {
9349 state = IOSTATE_goodbit;
9350 *ch = c;
9353 basic_istream_short_sentry_destroy(istream);
9355 basic_ios_wchar_setstate(basic_istream_short_get_basic_ios(istream),
9356 state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9357 return istream;
9360 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
9361 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
9362 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_streambuf, 8)
9363 basic_istream_wchar* __thiscall basic_istream_short_read_streambuf(
9364 basic_istream_wchar *this, basic_streambuf_wchar *streambuf)
9366 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
9367 IOSB_iostate state = IOSTATE_failbit;
9368 unsigned short c = '\n';
9370 TRACE("(%p %p)\n", this, streambuf);
9372 if(basic_istream_short_sentry_create(this, FALSE)) {
9373 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base)); c!=WEOF;
9374 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base))) {
9375 state = IOSTATE_goodbit;
9376 if(basic_streambuf_wchar_sputc(streambuf, c) == WEOF)
9377 break;
9380 basic_istream_short_sentry_destroy(this);
9382 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9383 return this;
9386 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
9387 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
9388 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_func, 8)
9389 basic_istream_wchar* __thiscall basic_istream_short_read_func(basic_istream_wchar *this,
9390 basic_istream_wchar* (__cdecl *pfunc)(basic_istream_wchar*))
9392 TRACE("(%p %p)\n", this, pfunc);
9393 pfunc(this);
9394 return this;
9397 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
9398 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
9399 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_func_basic_ios, 8)
9400 basic_istream_wchar* __thiscall basic_istream_short_read_func_basic_ios(basic_istream_wchar *this,
9401 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
9403 TRACE("(%p %p)\n", this, pfunc);
9404 pfunc(basic_istream_short_get_basic_ios(this));
9405 return this;
9408 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
9409 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
9410 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_func_ios_base, 8)
9411 basic_istream_wchar* __thiscall basic_istream_short_read_func_ios_base(
9412 basic_istream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
9414 TRACE("(%p %p)\n", this, pfunc);
9415 pfunc(&basic_istream_short_get_basic_ios(this)->base);
9416 return this;
9419 /* ?swap@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */
9420 /* ?swap@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */
9421 DEFINE_THISCALL_WRAPPER(basic_istream_short_swap, 8)
9422 void __thiscall basic_istream_short_swap(basic_istream_wchar *this, basic_istream_wchar *r)
9424 TRACE("(%p %p)\n", this, r);
9426 if(this == r)
9427 return;
9429 basic_ios_wchar_swap(basic_istream_short_get_basic_ios(this),
9430 basic_istream_short_get_basic_ios(r));
9431 this->count ^= r->count;
9432 r->count ^= this->count;
9433 this->count ^= r->count;
9436 static inline basic_ios_char* basic_iostream_char_to_basic_ios(basic_iostream_char *ptr)
9438 return (basic_ios_char*)((char*)ptr+basic_iostream_char_vbtable1[1]);
9441 static inline basic_iostream_char* basic_iostream_char_from_basic_ios(basic_ios_char *ptr)
9443 return (basic_iostream_char*)((char*)ptr-basic_iostream_char_vbtable1[1]);
9446 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
9447 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
9448 DEFINE_THISCALL_WRAPPER(basic_iostream_char_ctor, 12)
9449 basic_iostream_char* __thiscall basic_iostream_char_ctor(basic_iostream_char *this, basic_streambuf_char *strbuf, bool virt_init)
9451 basic_ios_char *basic_ios;
9453 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
9455 if(virt_init) {
9456 this->base1.vbtable = basic_iostream_char_vbtable1;
9457 this->base2.vbtable = basic_iostream_char_vbtable2;
9458 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
9459 basic_ios_char_ctor(basic_ios);
9460 }else {
9461 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
9464 basic_ios->base.vtable = &basic_iostream_char_vtable;
9466 basic_istream_char_ctor(&this->base1, strbuf, FALSE, FALSE);
9467 basic_ostream_char_ctor(&this->base2, NULL, FALSE, FALSE, FALSE);
9468 return this;
9471 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
9472 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
9473 DEFINE_THISCALL_WRAPPER(basic_iostream_char_dtor, 4)
9474 void __thiscall basic_iostream_char_dtor(basic_ios_char *base)
9476 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
9478 TRACE("(%p)\n", this);
9479 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base2));
9480 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base1));
9483 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
9484 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
9485 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vbase_dtor, 4)
9486 void __thiscall basic_iostream_char_vbase_dtor(basic_iostream_char *this)
9488 TRACE("(%p)\n", this);
9489 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(this));
9490 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base1));
9493 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vector_dtor, 8)
9494 basic_iostream_char* __thiscall basic_iostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
9496 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
9498 TRACE("(%p %x)\n", this, flags);
9500 if(flags & 2) {
9501 /* we have an array, with the number of elements stored before the first object */
9502 INT_PTR i, *ptr = (INT_PTR *)this-1;
9504 for(i=*ptr-1; i>=0; i--)
9505 basic_iostream_char_vbase_dtor(this+i);
9506 operator_delete(ptr);
9507 } else {
9508 basic_iostream_char_vbase_dtor(this);
9509 if(flags & 1)
9510 operator_delete(this);
9513 return this;
9516 /* ?swap@?$basic_iostream@DU?$char_traits@D@std@@@std@@QAEXAAV12@@Z */
9517 /* ?swap@?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAAXAEAV12@@Z */
9518 DEFINE_THISCALL_WRAPPER(basic_iostream_char_swap, 8)
9519 void __thiscall basic_iostream_char_swap(basic_iostream_char *this, basic_iostream_char *r)
9521 TRACE("(%p %p)\n", this, r);
9523 if(this == r)
9524 return;
9526 basic_ios_char_swap(basic_istream_char_get_basic_ios(&this->base1),
9527 basic_istream_char_get_basic_ios(&r->base1));
9530 static inline basic_ios_wchar* basic_iostream_short_to_basic_ios(basic_iostream_wchar *ptr)
9532 return (basic_ios_wchar*)((char*)ptr+basic_iostream_short_vbtable1[1]);
9535 static inline basic_iostream_wchar* basic_iostream_short_from_basic_ios(basic_ios_wchar *ptr)
9537 return (basic_iostream_wchar*)((char*)ptr-basic_iostream_short_vbtable1[1]);
9540 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
9541 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
9542 DEFINE_THISCALL_WRAPPER(basic_iostream_short_ctor, 12)
9543 basic_iostream_wchar* __thiscall basic_iostream_short_ctor(basic_iostream_wchar *this,
9544 basic_streambuf_wchar *strbuf, bool virt_init)
9546 basic_ios_wchar *basic_ios;
9548 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
9550 if(virt_init) {
9551 this->base1.vbtable = basic_iostream_short_vbtable1;
9552 this->base2.vbtable = basic_iostream_short_vbtable2;
9553 basic_ios = basic_istream_short_get_basic_ios(&this->base1);
9554 basic_ios_wchar_ctor(basic_ios);
9555 }else {
9556 basic_ios = basic_istream_short_get_basic_ios(&this->base1);
9559 basic_istream_short_ctor(&this->base1, strbuf, FALSE, FALSE);
9560 basic_ostream_short_ctor(&this->base2, NULL, FALSE, FALSE, FALSE);
9562 basic_ios->base.vtable = &basic_iostream_short_vtable;
9563 return this;
9566 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
9567 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
9568 DEFINE_THISCALL_WRAPPER(basic_iostream_short_dtor, 4)
9569 void __thiscall basic_iostream_short_dtor(basic_ios_wchar *base)
9571 basic_iostream_wchar *this = basic_iostream_short_from_basic_ios(base);
9573 TRACE("(%p)\n", this);
9574 basic_ostream_short_dtor(basic_ostream_short_to_basic_ios(&this->base2));
9575 basic_istream_short_dtor(basic_istream_short_to_basic_ios(&this->base1));
9578 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9579 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9580 DEFINE_THISCALL_WRAPPER(basic_iostream_short_vbase_dtor, 4)
9581 void __thiscall basic_iostream_short_vbase_dtor(basic_iostream_wchar *this)
9583 TRACE("(%p)\n", this);
9584 basic_iostream_short_dtor(basic_iostream_short_to_basic_ios(this));
9585 basic_ios_wchar_dtor(basic_istream_short_get_basic_ios(&this->base1));
9588 DEFINE_THISCALL_WRAPPER(basic_iostream_short_vector_dtor, 8)
9589 basic_iostream_wchar* __thiscall basic_iostream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
9591 basic_iostream_wchar *this = basic_iostream_short_from_basic_ios(base);
9593 TRACE("(%p %x)\n", this, flags);
9595 if(flags & 2) {
9596 /* we have an array, with the number of elements stored before the first object */
9597 INT_PTR i, *ptr = (INT_PTR *)this-1;
9599 for(i=*ptr-1; i>=0; i--)
9600 basic_iostream_short_vbase_dtor(this+i);
9601 operator_delete(ptr);
9602 } else {
9603 basic_iostream_short_vbase_dtor(this);
9604 if(flags & 1)
9605 operator_delete(this);
9608 return this;
9611 /* ?swap@?$basic_iostream@GU?$char_traits@G@std@@@std@@QAEXAAV12@@Z */
9612 /* ?swap@?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAAXAEAV12@@Z */
9613 DEFINE_THISCALL_WRAPPER(basic_iostream_short_swap, 8)
9614 void __thiscall basic_iostream_short_swap(basic_iostream_wchar *this, basic_iostream_wchar *r)
9616 TRACE("(%p %p)\n", this, r);
9618 if(this == r)
9619 return;
9621 basic_ios_wchar_swap(basic_istream_short_get_basic_ios(&this->base1),
9622 basic_istream_short_get_basic_ios(&r->base1));
9625 static inline basic_ios_char* basic_ofstream_char_to_basic_ios(basic_ofstream_char *ptr)
9627 return (basic_ios_char*)((char*)ptr+basic_ofstream_char_vbtable[1]);
9630 static inline basic_ofstream_char* basic_ofstream_char_from_basic_ios(basic_ios_char *ptr)
9632 return (basic_ofstream_char*)((char*)ptr-basic_ofstream_char_vbtable[1]);
9635 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
9636 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
9637 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor, 8)
9638 basic_ofstream_char* __thiscall basic_ofstream_char_ctor(basic_ofstream_char *this, bool virt_init)
9640 basic_ios_char *basic_ios;
9642 TRACE("(%p %d)\n", this, virt_init);
9644 if(virt_init) {
9645 this->base.vbtable = basic_ofstream_char_vbtable;
9646 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9647 basic_ios_char_ctor(basic_ios);
9648 }else {
9649 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9652 basic_filebuf_char_ctor(&this->filebuf);
9653 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, TRUE, FALSE);
9654 basic_ios->base.vtable = &basic_ofstream_char_vtable;
9655 return this;
9658 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
9659 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
9660 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_file, 12)
9661 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_file(
9662 basic_ofstream_char *this, FILE *file, bool virt_init)
9664 basic_ios_char *basic_ios;
9666 TRACE("(%p %p %d)\n", this, file, virt_init);
9668 if(virt_init) {
9669 this->base.vbtable = basic_ofstream_char_vbtable;
9670 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9671 basic_ios_char_ctor(basic_ios);
9672 }else {
9673 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9676 basic_filebuf_char_ctor_file(&this->filebuf, file);
9677 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, TRUE, FALSE);
9678 basic_ios->base.vtable = &basic_ofstream_char_vtable;
9679 return this;
9682 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@ABV01@@Z */
9683 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@AEBV01@@Z */
9684 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_copy_ctor, 12)
9685 basic_ofstream_char* __thiscall basic_ofstream_char_copy_ctor(basic_ofstream_char *this,
9686 basic_ofstream_char *copy, bool virt_init)
9688 TRACE("(%p %p %d)\n", this, copy, virt_init);
9689 return basic_ofstream_char_ctor_file(this, copy->filebuf.file, virt_init);
9692 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z */
9693 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z */
9694 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name, 16)
9695 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name(basic_ofstream_char *this,
9696 const char *name, int mode, bool virt_init)
9698 TRACE("(%p %s %d %d)\n", this, name, mode, virt_init);
9700 basic_ofstream_char_ctor(this, virt_init);
9702 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, _SH_DENYNO)) {
9703 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9704 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
9706 return this;
9709 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
9710 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
9711 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_dtor, 4)
9712 void __thiscall basic_ofstream_char_dtor(basic_ios_char *base)
9714 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
9716 TRACE("(%p)\n", this);
9718 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
9719 basic_filebuf_char_dtor(&this->filebuf);
9722 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
9723 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
9724 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vbase_dtor, 4)
9725 void __thiscall basic_ofstream_char_vbase_dtor(basic_ofstream_char *this)
9727 TRACE("(%p)\n", this);
9729 basic_ofstream_char_dtor(basic_ofstream_char_to_basic_ios(this));
9730 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
9733 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vector_dtor, 8)
9734 basic_ofstream_char* __thiscall basic_ofstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
9736 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
9738 TRACE("(%p %x)\n", this, flags);
9740 if(flags & 2) {
9741 /* we have an array, with the number of elements stored before the first object */
9742 INT_PTR i, *ptr = (INT_PTR *)this-1;
9744 for(i=*ptr-1; i>=0; i--)
9745 basic_ofstream_char_vbase_dtor(this+i);
9746 operator_delete(ptr);
9747 } else {
9748 basic_ofstream_char_vbase_dtor(this);
9749 if(flags & 1)
9750 operator_delete(this);
9753 return this;
9756 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
9757 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
9758 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_close, 4)
9759 void __thiscall basic_ofstream_char_close(basic_ofstream_char *this)
9761 TRACE("(%p)\n", this);
9763 if(!basic_filebuf_char_close(&this->filebuf)) {
9764 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9765 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
9769 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
9770 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
9771 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_is_open, 4)
9772 bool __thiscall basic_ofstream_char_is_open(const basic_ofstream_char *this)
9774 TRACE("(%p)\n", this);
9775 return basic_filebuf_char_is_open(&this->filebuf);
9778 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDH@Z */
9779 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDH@Z */
9780 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open, 12)
9781 void __thiscall basic_ofstream_char_open(basic_ofstream_char *this,
9782 const char *name, int mode)
9784 TRACE("(%p %s %d)\n", this, name, mode);
9786 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, _SH_DENYNO)) {
9787 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9788 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
9792 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDF@Z */
9793 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDF@Z */
9794 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_old, 12)
9795 void __thiscall basic_ofstream_char_open_old(basic_ofstream_char *this,
9796 const char *name, short mode)
9798 basic_ofstream_char_open(this, name, mode);
9801 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
9802 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
9803 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_rdbuf, 4)
9804 basic_filebuf_char* __thiscall basic_ofstream_char_rdbuf(const basic_ofstream_char *this)
9806 TRACE("(%p)\n", this);
9807 return (basic_filebuf_char*)&this->filebuf;
9810 static inline basic_ios_wchar* basic_ofstream_short_to_basic_ios(basic_ofstream_wchar *ptr)
9812 return (basic_ios_wchar*)((char*)ptr+basic_ofstream_short_vbtable[1]);
9815 static inline basic_ofstream_wchar* basic_ofstream_short_from_basic_ios(basic_ios_wchar *ptr)
9817 return (basic_ofstream_wchar*)((char*)ptr-basic_ofstream_short_vbtable[1]);
9820 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
9821 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
9822 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor, 8)
9823 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor(basic_ofstream_wchar *this, bool virt_init)
9825 basic_ios_wchar *basic_ios;
9827 TRACE("(%p %d)\n", this, virt_init);
9829 if(virt_init) {
9830 this->base.vbtable = basic_ofstream_short_vbtable;
9831 basic_ios = basic_ostream_short_get_basic_ios(&this->base);
9832 basic_ios_wchar_ctor(basic_ios);
9833 }else {
9834 basic_ios = basic_ostream_short_get_basic_ios(&this->base);
9837 basic_filebuf_wchar_ctor(&this->filebuf);
9838 basic_ostream_short_ctor(&this->base, &this->filebuf.base, FALSE, TRUE, FALSE);
9839 basic_ios->base.vtable = &basic_ofstream_short_vtable;
9840 return this;
9843 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
9844 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
9845 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_file, 12)
9846 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_file(
9847 basic_ofstream_wchar *this, FILE *file, bool virt_init)
9849 basic_ios_wchar *basic_ios;
9851 TRACE("(%p %p %d)\n", this, file, virt_init);
9853 if(virt_init) {
9854 this->base.vbtable = basic_ofstream_short_vbtable;
9855 basic_ios = basic_ostream_short_get_basic_ios(&this->base);
9856 basic_ios_wchar_ctor(basic_ios);
9857 }else {
9858 basic_ios = basic_ostream_short_get_basic_ios(&this->base);
9861 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
9862 basic_ostream_short_ctor(&this->base, &this->filebuf.base, FALSE, TRUE, FALSE);
9863 basic_ios->base.vtable = &basic_ofstream_short_vtable;
9864 return this;
9867 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@ABV01@@Z */
9868 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@AEBV01@@Z */
9869 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_copy_ctor, 12)
9870 basic_ofstream_wchar* __thiscall basic_ofstream_short_copy_ctor(basic_ofstream_wchar *this,
9871 basic_ofstream_wchar *copy, bool virt_init)
9873 TRACE("(%p %p %d)\n", this, copy, virt_init);
9874 return basic_ofstream_short_ctor_file(this, copy->filebuf.file, virt_init);
9877 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBDH@Z */
9878 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDH@Z */
9879 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_name, 16)
9880 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_name(basic_ofstream_wchar *this,
9881 const char *name, int mode, bool virt_init)
9883 TRACE("(%p %s %d %d)\n", this, name, mode, virt_init);
9885 basic_ofstream_short_ctor(this, virt_init);
9887 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, _SH_DENYNO)) {
9888 basic_ios_wchar *basic_ios = basic_ostream_short_get_basic_ios(&this->base);
9889 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
9891 return this;
9894 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
9895 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
9896 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_dtor, 4)
9897 void __thiscall basic_ofstream_short_dtor(basic_ios_wchar *base)
9899 basic_ofstream_wchar *this = basic_ofstream_short_from_basic_ios(base);
9901 TRACE("(%p)\n", this);
9903 basic_ostream_short_dtor(basic_ostream_short_to_basic_ios(&this->base));
9904 basic_filebuf_wchar_dtor(&this->filebuf);
9907 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9908 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9909 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_vbase_dtor, 4)
9910 void __thiscall basic_ofstream_short_vbase_dtor(basic_ofstream_wchar *this)
9912 TRACE("(%p)\n", this);
9914 basic_ofstream_short_dtor(basic_ofstream_short_to_basic_ios(this));
9915 basic_ios_wchar_dtor(basic_ostream_short_get_basic_ios(&this->base));
9918 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_vector_dtor, 8)
9919 basic_ofstream_wchar* __thiscall basic_ofstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
9921 basic_ofstream_wchar *this = basic_ofstream_short_from_basic_ios(base);
9923 TRACE("(%p %x)\n", this, flags);
9925 if(flags & 2) {
9926 /* we have an array, with the number of elements stored before the first object */
9927 INT_PTR i, *ptr = (INT_PTR *)this-1;
9929 for(i=*ptr-1; i>=0; i--)
9930 basic_ofstream_short_vbase_dtor(this+i);
9931 operator_delete(ptr);
9932 } else {
9933 basic_ofstream_short_vbase_dtor(this);
9934 if(flags & 1)
9935 operator_delete(this);
9938 return this;
9941 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9942 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9943 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_close, 4)
9944 void __thiscall basic_ofstream_short_close(basic_ofstream_wchar *this)
9946 TRACE("(%p)\n", this);
9948 if(!basic_filebuf_wchar_close(&this->filebuf)) {
9949 basic_ios_wchar *basic_ios = basic_ostream_short_get_basic_ios(&this->base);
9950 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
9954 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
9955 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
9956 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_is_open, 4)
9957 bool __thiscall basic_ofstream_short_is_open(const basic_ofstream_wchar *this)
9959 TRACE("(%p)\n", this);
9960 return basic_filebuf_wchar_is_open(&this->filebuf);
9963 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDH@Z */
9964 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDH@Z */
9965 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_open, 12)
9966 void __thiscall basic_ofstream_short_open(basic_ofstream_wchar *this,
9967 const char *name, int mode)
9969 TRACE("(%p %s %d)\n", this, name, mode);
9971 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, _SH_DENYNO)) {
9972 basic_ios_wchar *basic_ios = basic_ostream_short_get_basic_ios(&this->base);
9973 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
9977 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDF@Z */
9978 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDF@Z */
9979 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_open_old, 12)
9980 void __thiscall basic_ofstream_short_open_old(basic_ofstream_wchar *this,
9981 const char *name, int mode)
9983 basic_ofstream_short_open(this, name, mode);
9986 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
9987 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
9988 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_rdbuf, 4)
9989 basic_filebuf_wchar* __thiscall basic_ofstream_short_rdbuf(const basic_ofstream_wchar *this)
9991 TRACE("(%p)\n", this);
9992 return (basic_filebuf_wchar*)&this->filebuf;
9995 static inline basic_ios_char* basic_ifstream_char_to_basic_ios(basic_ifstream_char *ptr)
9997 return (basic_ios_char*)((char*)ptr+basic_ifstream_char_vbtable[1]);
10000 static inline basic_ifstream_char* basic_ifstream_char_from_basic_ios(basic_ios_char *ptr)
10002 return (basic_ifstream_char*)((char*)ptr-basic_ifstream_char_vbtable[1]);
10005 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
10006 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
10007 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor, 8)
10008 basic_ifstream_char* __thiscall basic_ifstream_char_ctor(basic_ifstream_char *this, bool virt_init)
10010 basic_ios_char *basic_ios;
10012 TRACE("(%p %d)\n", this, virt_init);
10014 if(virt_init) {
10015 this->base.vbtable = basic_ifstream_char_vbtable;
10016 basic_ios = basic_istream_char_get_basic_ios(&this->base);
10017 basic_ios_char_ctor(basic_ios);
10018 }else {
10019 basic_ios = basic_istream_char_get_basic_ios(&this->base);
10022 basic_filebuf_char_ctor(&this->filebuf);
10023 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10024 basic_ios->base.vtable = &basic_ifstream_char_vtable;
10025 return this;
10028 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
10029 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10030 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_file, 12)
10031 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_file(
10032 basic_ifstream_char *this, FILE *file, bool virt_init)
10034 basic_ios_char *basic_ios;
10036 TRACE("(%p %p %d)\n", this, file, virt_init);
10038 if(virt_init) {
10039 this->base.vbtable = basic_ifstream_char_vbtable;
10040 basic_ios = basic_istream_char_get_basic_ios(&this->base);
10041 basic_ios_char_ctor(basic_ios);
10042 }else {
10043 basic_ios = basic_istream_char_get_basic_ios(&this->base);
10046 basic_filebuf_char_ctor_file(&this->filebuf, file);
10047 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10048 basic_ios->base.vtable = &basic_ifstream_char_vtable;
10049 return this;
10052 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@ABV01@@Z */
10053 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@AEBV01@@Z */
10054 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_copy_ctor, 12)
10055 basic_ifstream_char* __thiscall basic_ifstream_char_copy_ctor(basic_ifstream_char *this,
10056 const basic_ifstream_char *copy, bool virt_init)
10058 TRACE("(%p %p %d)\n", this, copy, virt_init);
10059 return basic_ifstream_char_ctor_file(this, copy->filebuf.file, virt_init);
10062 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z */
10063 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z */
10064 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name, 16)
10065 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name(basic_ifstream_char *this,
10066 const char *name, int mode, bool virt_init)
10068 TRACE("(%p %s %d %d)\n", this, name, mode, virt_init);
10070 basic_ifstream_char_ctor(this, virt_init);
10072 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, _SH_DENYNO)) {
10073 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
10074 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10076 return this;
10079 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
10080 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
10081 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_dtor, 4)
10082 void __thiscall basic_ifstream_char_dtor(basic_ios_char *base)
10084 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
10086 TRACE("(%p)\n", this);
10088 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
10089 basic_filebuf_char_dtor(&this->filebuf);
10092 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10093 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10094 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vbase_dtor, 4)
10095 void __thiscall basic_ifstream_char_vbase_dtor(basic_ifstream_char *this)
10097 TRACE("(%p)\n", this);
10099 basic_ifstream_char_dtor(basic_ifstream_char_to_basic_ios(this));
10100 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base));
10103 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vector_dtor, 8)
10104 basic_ifstream_char* __thiscall basic_ifstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
10106 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
10108 TRACE("(%p %x)\n", this, flags);
10110 if(flags & 2) {
10111 /* we have an array, with the number of elements stored before the first object */
10112 INT_PTR i, *ptr = (INT_PTR *)this-1;
10114 for(i=*ptr-1; i>=0; i--)
10115 basic_ifstream_char_vbase_dtor(this+i);
10116 operator_delete(ptr);
10117 } else {
10118 basic_ifstream_char_vbase_dtor(this);
10119 if(flags & 1)
10120 operator_delete(this);
10123 return this;
10126 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10127 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10128 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_close, 4)
10129 void __thiscall basic_ifstream_char_close(basic_ifstream_char *this)
10131 TRACE("(%p)\n", this);
10133 if(!basic_filebuf_char_close(&this->filebuf)) {
10134 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
10135 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10139 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
10140 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
10141 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_is_open, 4)
10142 bool __thiscall basic_ifstream_char_is_open(const basic_ifstream_char *this)
10144 TRACE("(%p)\n", this);
10145 return basic_filebuf_char_is_open(&this->filebuf);
10148 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDH@Z */
10149 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDH@Z */
10150 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open, 12)
10151 void __thiscall basic_ifstream_char_open(basic_ifstream_char *this,
10152 const char *name, int mode)
10154 TRACE("(%p %s %d)\n", this, name, mode);
10156 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, _SH_DENYNO)) {
10157 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
10158 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10162 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDF@Z */
10163 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDF@Z */
10164 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_old, 12)
10165 void __thiscall basic_ifstream_char_open_old(basic_ifstream_char *this,
10166 const char *name, short mode)
10168 basic_ifstream_char_open(this, name, mode);
10171 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10172 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10173 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_rdbuf, 4)
10174 basic_filebuf_char* __thiscall basic_ifstream_char_rdbuf(const basic_ifstream_char *this)
10176 TRACE("(%p)\n", this);
10177 return (basic_filebuf_char*)&this->filebuf;
10180 static inline basic_ios_wchar* basic_ifstream_short_to_basic_ios(basic_ifstream_wchar *ptr)
10182 return (basic_ios_wchar*)((char*)ptr+basic_ifstream_short_vbtable[1]);
10185 static inline basic_ifstream_wchar* basic_ifstream_short_from_basic_ios(basic_ios_wchar *ptr)
10187 return (basic_ifstream_wchar*)((char*)ptr-basic_ifstream_short_vbtable[1]);
10190 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
10191 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
10192 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor, 8)
10193 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor(basic_ifstream_wchar *this, bool virt_init)
10195 basic_ios_wchar *basic_ios;
10197 TRACE("(%p %d)\n", this, virt_init);
10199 if(virt_init) {
10200 this->base.vbtable = basic_ifstream_short_vbtable;
10201 basic_ios = basic_istream_short_get_basic_ios(&this->base);
10202 basic_ios_wchar_ctor(basic_ios);
10203 }else {
10204 basic_ios = basic_istream_short_get_basic_ios(&this->base);
10207 basic_filebuf_wchar_ctor(&this->filebuf);
10208 basic_istream_short_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10209 basic_ios->base.vtable = &basic_ifstream_short_vtable;
10210 return this;
10213 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
10214 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10215 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_file, 12)
10216 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_file(
10217 basic_ifstream_wchar *this, FILE *file, bool virt_init)
10219 basic_ios_wchar *basic_ios;
10221 TRACE("(%p %p %d)\n", this, file, virt_init);
10223 if(virt_init) {
10224 this->base.vbtable = basic_ifstream_short_vbtable;
10225 basic_ios = basic_istream_short_get_basic_ios(&this->base);
10226 basic_ios_wchar_ctor(basic_ios);
10227 }else {
10228 basic_ios = basic_istream_short_get_basic_ios(&this->base);
10231 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
10232 basic_istream_short_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10233 basic_ios->base.vtable = &basic_ifstream_short_vtable;
10234 return this;
10237 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@ABV01@@Z */
10238 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@AEBV01@@Z */
10239 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_copy_ctor, 12)
10240 basic_ifstream_wchar* __thiscall basic_ifstream_short_copy_ctor(basic_ifstream_wchar *this,
10241 basic_ifstream_wchar *copy, bool virt_init)
10243 TRACE("(%p %p %d)\n", this, copy, virt_init);
10244 return basic_ifstream_short_ctor_file(this, copy->filebuf.file, virt_init);
10247 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBDH@Z */
10248 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDH@Z */
10249 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name, 16)
10250 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name(basic_ifstream_wchar *this,
10251 const char *name, int mode, bool virt_init)
10253 TRACE("(%p %s %d %d)\n", this, name, mode, virt_init);
10255 basic_ifstream_short_ctor(this, virt_init);
10257 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_in, _SH_DENYNO)) {
10258 basic_ios_wchar *basic_ios = basic_istream_short_get_basic_ios(&this->base);
10259 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10261 return this;
10264 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
10265 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
10266 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_dtor, 4)
10267 void __thiscall basic_ifstream_short_dtor(basic_ios_wchar *base)
10269 basic_ifstream_wchar *this = basic_ifstream_short_from_basic_ios(base);
10271 TRACE("(%p)\n", this);
10273 basic_istream_short_dtor(basic_istream_short_to_basic_ios(&this->base));
10274 basic_filebuf_wchar_dtor(&this->filebuf);
10277 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10278 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10279 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_vbase_dtor, 4)
10280 void __thiscall basic_ifstream_short_vbase_dtor(basic_ifstream_wchar *this)
10282 TRACE("(%p)\n", this);
10284 basic_ifstream_short_dtor(basic_ifstream_short_to_basic_ios(this));
10285 basic_ios_wchar_dtor(basic_istream_short_get_basic_ios(&this->base));
10288 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_vector_dtor, 8)
10289 basic_ifstream_wchar* __thiscall basic_ifstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
10291 basic_ifstream_wchar *this = basic_ifstream_short_from_basic_ios(base);
10293 TRACE("(%p %x)\n", this, flags);
10295 if(flags & 2) {
10296 /* we have an array, with the number of elements stored before the first object */
10297 INT_PTR i, *ptr = (INT_PTR *)this-1;
10299 for(i=*ptr-1; i>=0; i--)
10300 basic_ifstream_short_vbase_dtor(this+i);
10301 operator_delete(ptr);
10302 } else {
10303 basic_ifstream_short_vbase_dtor(this);
10304 if(flags & 1)
10305 operator_delete(this);
10308 return this;
10311 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10312 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10313 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_close, 4)
10314 void __thiscall basic_ifstream_short_close(basic_ifstream_wchar *this)
10316 TRACE("(%p)\n", this);
10318 if(!basic_filebuf_wchar_close(&this->filebuf)) {
10319 basic_ios_wchar *basic_ios = basic_istream_short_get_basic_ios(&this->base);
10320 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10324 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
10325 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
10326 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_is_open, 4)
10327 bool __thiscall basic_ifstream_short_is_open(const basic_ifstream_wchar *this)
10329 TRACE("(%p)\n", this);
10330 return basic_filebuf_wchar_is_open(&this->filebuf);
10333 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDH@Z */
10334 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDH@Z */
10335 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_open, 12)
10336 void __thiscall basic_ifstream_short_open(basic_ifstream_wchar *this,
10337 const char *name, int mode)
10339 TRACE("(%p %s %d)\n", this, name, mode);
10341 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_in, _SH_DENYNO)) {
10342 basic_ios_wchar *basic_ios = basic_istream_short_get_basic_ios(&this->base);
10343 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10347 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDF@Z */
10348 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDF@Z */
10349 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_open_old, 12)
10350 void __thiscall basic_ifstream_short_open_old(basic_ifstream_wchar *this,
10351 const char *name, short mode)
10353 basic_ifstream_short_open(this, name, mode);
10356 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
10357 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
10358 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_rdbuf, 4)
10359 basic_filebuf_wchar* __thiscall basic_ifstream_short_rdbuf(const basic_ifstream_wchar *this)
10361 TRACE("(%p)\n", this);
10362 return (basic_filebuf_wchar*)&this->filebuf;
10365 static inline basic_ios_char* basic_fstream_char_to_basic_ios(basic_fstream_char *ptr)
10367 return (basic_ios_char*)((char*)ptr+basic_fstream_char_vbtable1[1]);
10370 static inline basic_fstream_char* basic_fstream_char_from_basic_ios(basic_ios_char *ptr)
10372 return (basic_fstream_char*)((char*)ptr-basic_fstream_char_vbtable1[1]);
10375 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
10376 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
10377 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor, 8)
10378 basic_fstream_char* __thiscall basic_fstream_char_ctor(basic_fstream_char *this, bool virt_init)
10380 basic_ios_char *basic_ios;
10382 TRACE("(%p %d)\n", this, virt_init);
10384 if(virt_init) {
10385 this->base.base1.vbtable = basic_fstream_char_vbtable1;
10386 this->base.base2.vbtable = basic_fstream_char_vbtable2;
10387 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10388 basic_ios_char_ctor(basic_ios);
10389 }else {
10390 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10393 basic_filebuf_char_ctor(&this->filebuf);
10394 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
10395 basic_ios->base.vtable = &basic_fstream_char_vtable;
10396 return this;
10399 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
10400 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10401 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_file, 12)
10402 basic_fstream_char* __thiscall basic_fstream_char_ctor_file(basic_fstream_char *this,
10403 FILE *file, bool virt_init)
10405 basic_ios_char *basic_ios;
10407 TRACE("(%p %p %d)\n", this, file, virt_init);
10409 if(virt_init) {
10410 this->base.base1.vbtable = basic_fstream_char_vbtable1;
10411 this->base.base2.vbtable = basic_fstream_char_vbtable2;
10412 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10413 basic_ios_char_ctor(basic_ios);
10414 }else {
10415 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10418 basic_filebuf_char_ctor_file(&this->filebuf, file);
10419 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
10420 basic_ios->base.vtable = &basic_fstream_char_vtable;
10421 return this;
10424 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@ABV01@@Z */
10425 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@AEBV01@@Z */
10426 DEFINE_THISCALL_WRAPPER(basic_fstream_char_copy_ctor, 12)
10427 basic_fstream_char* __thiscall basic_fstream_char_copy_ctor(basic_fstream_char *this,
10428 basic_fstream_char *copy, bool virt_init)
10430 TRACE("(%p %p %d)\n", this, copy, virt_init);
10431 return basic_fstream_char_ctor_file(this, copy->filebuf.file, virt_init);
10434 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z */
10435 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z */
10436 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name, 16)
10437 basic_fstream_char* __thiscall basic_fstream_char_ctor_name(basic_fstream_char *this,
10438 const char *name, int mode, bool virt_init)
10440 TRACE("(%p %s %d %d)\n", this, name, mode, virt_init);
10442 basic_fstream_char_ctor(this, virt_init);
10444 if(!basic_filebuf_char_open(&this->filebuf, name, mode, _SH_DENYNO)) {
10445 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10446 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10448 return this;
10451 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
10452 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
10453 DEFINE_THISCALL_WRAPPER(basic_fstream_char_dtor, 4)
10454 void __thiscall basic_fstream_char_dtor(basic_ios_char *base)
10456 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
10458 TRACE("(%p)\n", this);
10460 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
10461 basic_filebuf_char_dtor(&this->filebuf);
10464 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10465 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10466 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vbase_dtor, 4)
10467 void __thiscall basic_fstream_char_vbase_dtor(basic_fstream_char *this)
10469 TRACE("(%p)\n", this);
10471 basic_fstream_char_dtor(basic_fstream_char_to_basic_ios(this));
10472 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
10475 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vector_dtor, 8)
10476 basic_fstream_char* __thiscall basic_fstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
10478 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
10480 TRACE("(%p %x)\n", this, flags);
10482 if(flags & 2) {
10483 /* we have an array, with the number of elements stored before the first object */
10484 INT_PTR i, *ptr = (INT_PTR *)this-1;
10486 for(i=*ptr-1; i>=0; i--)
10487 basic_fstream_char_vbase_dtor(this+i);
10488 operator_delete(ptr);
10489 } else {
10490 basic_fstream_char_vbase_dtor(this);
10491 if(flags & 1)
10492 operator_delete(this);
10495 return this;
10498 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10499 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10500 DEFINE_THISCALL_WRAPPER(basic_fstream_char_close, 4)
10501 void __thiscall basic_fstream_char_close(basic_fstream_char *this)
10503 TRACE("(%p)\n", this);
10505 if(!basic_filebuf_char_close(&this->filebuf)) {
10506 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10507 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10511 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
10512 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
10513 DEFINE_THISCALL_WRAPPER(basic_fstream_char_is_open, 4)
10514 bool __thiscall basic_fstream_char_is_open(const basic_fstream_char *this)
10516 TRACE("(%p)\n", this);
10517 return basic_filebuf_char_is_open(&this->filebuf);
10520 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDH@Z */
10521 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDH@Z */
10522 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open, 12)
10523 void __thiscall basic_fstream_char_open(basic_fstream_char *this,
10524 const char *name, int mode)
10526 TRACE("(%p %s %d)\n", this, name, mode);
10528 if(!basic_filebuf_char_open(&this->filebuf, name, mode, _SH_DENYNO)) {
10529 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10530 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10534 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDF@Z */
10535 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDF@Z */
10536 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_old, 12)
10537 void __thiscall basic_fstream_char_open_old(basic_fstream_char *this,
10538 const char *name, int mode)
10540 basic_fstream_char_open(this, name, mode);
10543 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10544 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10545 DEFINE_THISCALL_WRAPPER(basic_fstream_char_rdbuf, 4)
10546 basic_filebuf_char* __thiscall basic_fstream_char_rdbuf(const basic_fstream_char *this)
10548 TRACE("(%p)\n", this);
10549 return (basic_filebuf_char*)&this->filebuf;
10552 static inline basic_ios_wchar* basic_fstream_short_to_basic_ios(basic_fstream_wchar *ptr)
10554 return (basic_ios_wchar*)((char*)ptr+basic_fstream_short_vbtable1[1]);
10557 static inline basic_fstream_wchar* basic_fstream_short_from_basic_ios(basic_ios_wchar *ptr)
10559 return (basic_fstream_wchar*)((char*)ptr-basic_fstream_short_vbtable1[1]);
10562 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
10563 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
10564 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor, 8)
10565 basic_fstream_wchar* __thiscall basic_fstream_short_ctor(basic_fstream_wchar *this, bool virt_init)
10567 basic_ios_wchar *basic_ios;
10569 TRACE("(%p %d)\n", this, virt_init);
10571 if(virt_init) {
10572 this->base.base1.vbtable = basic_fstream_short_vbtable1;
10573 this->base.base2.vbtable = basic_fstream_short_vbtable2;
10574 basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
10575 basic_ios_wchar_ctor(basic_ios);
10576 }else {
10577 basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
10580 basic_filebuf_wchar_ctor(&this->filebuf);
10581 basic_iostream_short_ctor(&this->base, &this->filebuf.base, FALSE);
10582 basic_ios->base.vtable = &basic_fstream_short_vtable;
10583 return this;
10586 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
10587 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10588 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_file, 12)
10589 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_file(basic_fstream_wchar *this,
10590 FILE *file, bool virt_init)
10592 basic_ios_wchar *basic_ios;
10594 TRACE("(%p %p %d)\n", this, file, virt_init);
10596 if(virt_init) {
10597 this->base.base1.vbtable = basic_fstream_short_vbtable1;
10598 this->base.base2.vbtable = basic_fstream_short_vbtable2;
10599 basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
10600 basic_ios_wchar_ctor(basic_ios);
10601 }else {
10602 basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
10605 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
10606 basic_iostream_short_ctor(&this->base, &this->filebuf.base, FALSE);
10607 basic_ios->base.vtable = &basic_fstream_short_vtable;
10608 return this;
10611 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@ABV01@@Z */
10612 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@AEBV01@@Z */
10613 DEFINE_THISCALL_WRAPPER(basic_fstream_short_copy_ctor, 12)
10614 basic_fstream_wchar* __thiscall basic_fstream_short_copy_ctor(basic_fstream_wchar *this,
10615 basic_fstream_wchar *copy, bool virt_init)
10617 TRACE("(%p %p %d)\n", this, copy, virt_init);
10618 return basic_fstream_short_ctor_file(this, copy->filebuf.file, virt_init);
10621 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
10622 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
10623 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name, 16)
10624 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name(basic_fstream_wchar *this,
10625 const char *name, int mode, bool virt_init)
10627 TRACE("(%p %s %d %d)\n", this, name, mode, virt_init);
10629 basic_fstream_short_ctor(this, virt_init);
10631 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode, _SH_DENYNO)) {
10632 basic_ios_wchar *basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
10633 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10635 return this;
10638 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
10639 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
10640 DEFINE_THISCALL_WRAPPER(basic_fstream_short_dtor, 4)
10641 void __thiscall basic_fstream_short_dtor(basic_ios_wchar *base)
10643 basic_fstream_wchar *this = basic_fstream_short_from_basic_ios(base);
10645 TRACE("(%p)\n", this);
10647 basic_iostream_short_dtor(basic_iostream_short_to_basic_ios(&this->base));
10648 basic_filebuf_wchar_dtor(&this->filebuf);
10651 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10652 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10653 DEFINE_THISCALL_WRAPPER(basic_fstream_short_vbase_dtor, 4)
10654 void __thiscall basic_fstream_short_vbase_dtor(basic_fstream_wchar *this)
10656 TRACE("(%p)\n", this);
10658 basic_fstream_short_dtor(basic_fstream_short_to_basic_ios(this));
10659 basic_ios_wchar_dtor(basic_istream_short_get_basic_ios(&this->base.base1));
10662 DEFINE_THISCALL_WRAPPER(basic_fstream_short_vector_dtor, 8)
10663 basic_fstream_wchar* __thiscall basic_fstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
10665 basic_fstream_wchar *this = basic_fstream_short_from_basic_ios(base);
10667 TRACE("(%p %x)\n", this, flags);
10669 if(flags & 2) {
10670 /* we have an array, with the number of elements stored before the first object */
10671 INT_PTR i, *ptr = (INT_PTR *)this-1;
10673 for(i=*ptr-1; i>=0; i--)
10674 basic_fstream_short_vbase_dtor(this+i);
10675 operator_delete(ptr);
10676 } else {
10677 basic_fstream_short_vbase_dtor(this);
10678 if(flags & 1)
10679 operator_delete(this);
10682 return this;
10685 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10686 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10687 DEFINE_THISCALL_WRAPPER(basic_fstream_short_close, 4)
10688 void __thiscall basic_fstream_short_close(basic_fstream_wchar *this)
10690 TRACE("(%p)\n", this);
10692 if(!basic_filebuf_wchar_close(&this->filebuf)) {
10693 basic_ios_wchar *basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
10694 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10698 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
10699 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
10700 DEFINE_THISCALL_WRAPPER(basic_fstream_short_is_open, 4)
10701 bool __thiscall basic_fstream_short_is_open(const basic_fstream_wchar *this)
10703 TRACE("(%p)\n", this);
10704 return basic_filebuf_wchar_is_open(&this->filebuf);
10707 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDH@Z */
10708 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDH@Z */
10709 DEFINE_THISCALL_WRAPPER(basic_fstream_short_open, 12)
10710 void __thiscall basic_fstream_short_open(basic_fstream_wchar *this,
10711 const char *name, int mode)
10713 TRACE("(%p %s %d)\n", this, name, mode);
10715 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode, _SH_DENYNO)) {
10716 basic_ios_wchar *basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
10717 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10721 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDF@Z */
10722 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDF@Z */
10723 DEFINE_THISCALL_WRAPPER(basic_fstream_short_open_old, 12)
10724 void __thiscall basic_fstream_short_open_old(basic_fstream_wchar *this,
10725 const char *name, int mode)
10727 basic_fstream_short_open(this, name, mode);
10730 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
10731 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
10732 DEFINE_THISCALL_WRAPPER(basic_fstream_short_rdbuf, 4)
10733 basic_filebuf_wchar* __thiscall basic_fstream_short_rdbuf(const basic_fstream_wchar *this)
10735 TRACE("(%p)\n", this);
10736 return (basic_filebuf_wchar*)&this->filebuf;
10739 static inline basic_ios_char* basic_ostringstream_char_to_basic_ios(basic_ostringstream_char *ptr)
10741 return (basic_ios_char*)((char*)ptr+basic_ostringstream_char_vbtable[1]);
10744 static inline basic_ostringstream_char* basic_ostringstream_char_from_basic_ios(basic_ios_char *ptr)
10746 return (basic_ostringstream_char*)((char*)ptr-basic_ostringstream_char_vbtable[1]);
10749 /* ??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 */
10750 /* ??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 */
10751 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_str, 16)
10752 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_str(basic_ostringstream_char *this,
10753 const basic_string_char *str, int mode, bool virt_init)
10755 basic_ios_char *basic_ios;
10757 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
10759 if(virt_init) {
10760 this->base.vbtable = basic_ostringstream_char_vbtable;
10761 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10762 basic_ios_char_ctor(basic_ios);
10763 }else {
10764 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10767 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
10768 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, TRUE, FALSE);
10769 basic_ios->base.vtable = &basic_ostringstream_char_vtable;
10770 return this;
10773 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
10774 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
10775 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_mode, 12)
10776 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_mode(
10777 basic_ostringstream_char *this, int mode, bool virt_init)
10779 basic_ios_char *basic_ios;
10781 TRACE("(%p %d %d)\n", this, mode, virt_init);
10783 if(virt_init) {
10784 this->base.vbtable = basic_ostringstream_char_vbtable;
10785 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10786 basic_ios_char_ctor(basic_ios);
10787 }else {
10788 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10791 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_out);
10792 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, TRUE, FALSE);
10793 basic_ios->base.vtable = &basic_ostringstream_char_vtable;
10794 return this;
10797 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
10798 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
10799 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor, 4)
10800 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor(
10801 basic_ostringstream_char *this)
10803 return basic_ostringstream_char_ctor_mode(this, 0, TRUE);
10806 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
10807 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
10808 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_dtor, 4)
10809 void __thiscall basic_ostringstream_char_dtor(basic_ios_char *base)
10811 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
10813 TRACE("(%p)\n", this);
10815 basic_stringbuf_char_dtor(&this->strbuf);
10816 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
10819 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
10820 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
10821 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vbase_dtor, 4)
10822 void __thiscall basic_ostringstream_char_vbase_dtor(basic_ostringstream_char *this)
10824 TRACE("(%p)\n", this);
10826 basic_ostringstream_char_dtor(basic_ostringstream_char_to_basic_ios(this));
10827 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
10830 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vector_dtor, 8)
10831 basic_ostringstream_char* __thiscall basic_ostringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
10833 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
10835 TRACE("(%p %x)\n", this, flags);
10837 if(flags & 2) {
10838 /* we have an array, with the number of elements stored before the first object */
10839 INT_PTR i, *ptr = (INT_PTR *)this-1;
10841 for(i=*ptr-1; i>=0; i--)
10842 basic_ostringstream_char_vbase_dtor(this+i);
10843 operator_delete(ptr);
10844 } else {
10845 basic_ostringstream_char_vbase_dtor(this);
10846 if(flags & 1)
10847 operator_delete(this);
10850 return this;
10853 /* ?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 */
10854 /* ?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 */
10855 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_rdbuf, 4)
10856 basic_stringbuf_char* __thiscall basic_ostringstream_char_rdbuf(const basic_ostringstream_char *this)
10858 TRACE("(%p)\n", this);
10859 return (basic_stringbuf_char*)&this->strbuf;
10862 /* ?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 */
10863 /* ?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 */
10864 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_set, 8)
10865 void __thiscall basic_ostringstream_char_str_set(basic_ostringstream_char *this, const basic_string_char *str)
10867 TRACE("(%p %p)\n", this, str);
10868 basic_stringbuf_char_str_set(&this->strbuf, str);
10871 /* ?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 */
10872 /* ?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 */
10873 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_get, 8)
10874 basic_string_char* __thiscall basic_ostringstream_char_str_get(const basic_ostringstream_char *this, basic_string_char *ret)
10876 TRACE("(%p %p)\n", this, ret);
10877 return basic_stringbuf_char_str_get(&this->strbuf, ret);
10880 static inline basic_ios_wchar* basic_ostringstream_short_to_basic_ios(basic_ostringstream_wchar *ptr)
10882 return (basic_ios_wchar*)((char*)ptr+basic_ostringstream_short_vbtable[1]);
10885 static inline basic_ostringstream_wchar* basic_ostringstream_short_from_basic_ios(basic_ios_wchar *ptr)
10887 return (basic_ostringstream_wchar*)((char*)ptr-basic_ostringstream_short_vbtable[1]);
10890 /* ??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 */
10891 /* ??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 */
10892 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_str, 16)
10893 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_str(basic_ostringstream_wchar *this,
10894 const basic_string_wchar *str, int mode, bool virt_init)
10896 basic_ios_wchar *basic_ios;
10898 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
10900 if(virt_init) {
10901 this->base.vbtable = basic_ostringstream_short_vbtable;
10902 basic_ios = basic_ostream_short_get_basic_ios(&this->base);
10903 basic_ios_wchar_ctor(basic_ios);
10904 }else {
10905 basic_ios = basic_ostream_short_get_basic_ios(&this->base);
10908 basic_stringbuf_short_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
10909 basic_ostream_short_ctor(&this->base, &this->strbuf.base, FALSE, TRUE, FALSE);
10910 basic_ios->base.vtable = &basic_ostringstream_short_vtable;
10911 return this;
10914 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
10915 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
10916 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_mode, 12)
10917 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_mode(
10918 basic_ostringstream_wchar *this, int mode, bool virt_init)
10920 basic_ios_wchar *basic_ios;
10922 TRACE("(%p %d %d)\n", this, mode, virt_init);
10924 if(virt_init) {
10925 this->base.vbtable = basic_ostringstream_short_vbtable;
10926 basic_ios = basic_ostream_short_get_basic_ios(&this->base);
10927 basic_ios_wchar_ctor(basic_ios);
10928 }else {
10929 basic_ios = basic_ostream_short_get_basic_ios(&this->base);
10932 basic_stringbuf_short_ctor_mode(&this->strbuf, mode|OPENMODE_out);
10933 basic_ostream_short_ctor(&this->base, &this->strbuf.base, FALSE, TRUE, FALSE);
10934 basic_ios->base.vtable = &basic_ostringstream_short_vtable;
10935 return this;
10938 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
10939 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
10940 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor, 4)
10941 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor(
10942 basic_ostringstream_wchar *this)
10944 return basic_ostringstream_short_ctor_mode(this, 0, TRUE);
10947 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
10948 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
10949 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_dtor, 4)
10950 void __thiscall basic_ostringstream_short_dtor(basic_ios_wchar *base)
10952 basic_ostringstream_wchar *this = basic_ostringstream_short_from_basic_ios(base);
10954 TRACE("(%p)\n", this);
10956 basic_stringbuf_short_dtor(&this->strbuf);
10957 basic_ostream_short_dtor(basic_ostream_short_to_basic_ios(&this->base));
10960 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
10961 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
10962 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_vbase_dtor, 4)
10963 void __thiscall basic_ostringstream_short_vbase_dtor(basic_ostringstream_wchar *this)
10965 TRACE("(%p)\n", this);
10967 basic_ostringstream_short_dtor(basic_ostringstream_short_to_basic_ios(this));
10968 basic_ios_wchar_dtor(basic_ostream_short_get_basic_ios(&this->base));
10971 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_vector_dtor, 8)
10972 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
10974 basic_ostringstream_wchar *this = basic_ostringstream_short_from_basic_ios(base);
10976 TRACE("(%p %x)\n", this, flags);
10978 if(flags & 2) {
10979 /* we have an array, with the number of elements stored before the first object */
10980 INT_PTR i, *ptr = (INT_PTR *)this-1;
10982 for(i=*ptr-1; i>=0; i--)
10983 basic_ostringstream_short_vbase_dtor(this+i);
10984 operator_delete(ptr);
10985 } else {
10986 basic_ostringstream_short_vbase_dtor(this);
10987 if(flags & 1)
10988 operator_delete(this);
10991 return this;
10994 /* ?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 */
10995 /* ?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 */
10996 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_rdbuf, 4)
10997 basic_stringbuf_wchar* __thiscall basic_ostringstream_short_rdbuf(const basic_ostringstream_wchar *this)
10999 TRACE("(%p)\n", this);
11000 return (basic_stringbuf_wchar*)&this->strbuf;
11003 /* ?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 */
11004 /* ?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 */
11005 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_str_set, 8)
11006 void __thiscall basic_ostringstream_short_str_set(basic_ostringstream_wchar *this, const basic_string_wchar *str)
11008 TRACE("(%p %p)\n", this, str);
11009 basic_stringbuf_short_str_set(&this->strbuf, str);
11012 /* ?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 */
11013 /* ?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 */
11014 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_str_get, 8)
11015 basic_string_wchar* __thiscall basic_ostringstream_short_str_get(const basic_ostringstream_wchar *this, basic_string_wchar *ret)
11017 TRACE("(%p %p)\n", this, ret);
11018 return basic_stringbuf_short_str_get(&this->strbuf, ret);
11021 static inline basic_ios_char* basic_istringstream_char_to_basic_ios(basic_istringstream_char *ptr)
11023 return (basic_ios_char*)((char*)ptr+basic_istringstream_char_vbtable[1]);
11026 static inline basic_istringstream_char* basic_istringstream_char_from_basic_ios(basic_ios_char *ptr)
11028 return (basic_istringstream_char*)((char*)ptr-basic_istringstream_char_vbtable[1]);
11031 /* ??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 */
11032 /* ??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 */
11033 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_str, 16)
11034 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_str(basic_istringstream_char *this,
11035 const basic_string_char *str, int mode, bool virt_init)
11037 basic_ios_char *basic_ios;
11039 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11041 if(virt_init) {
11042 this->base.vbtable = basic_istringstream_char_vbtable;
11043 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11044 basic_ios_char_ctor(basic_ios);
11045 }else {
11046 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11049 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
11050 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11051 basic_ios->base.vtable = &basic_istringstream_char_vtable;
11052 return this;
11055 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
11056 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
11057 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_mode, 12)
11058 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_mode(
11059 basic_istringstream_char *this, int mode, bool virt_init)
11061 basic_ios_char *basic_ios;
11063 TRACE("(%p %d %d)\n", this, mode, virt_init);
11065 if(virt_init) {
11066 this->base.vbtable = basic_istringstream_char_vbtable;
11067 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11068 basic_ios_char_ctor(basic_ios);
11069 }else {
11070 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11073 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_in);
11074 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11075 basic_ios->base.vtable = &basic_istringstream_char_vtable;
11076 return this;
11079 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11080 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11081 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor, 4)
11082 basic_istringstream_char* __thiscall basic_istringstream_char_ctor(
11083 basic_istringstream_char *this)
11085 return basic_istringstream_char_ctor_mode(this, 0, TRUE);
11088 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
11089 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
11090 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_dtor, 4)
11091 void __thiscall basic_istringstream_char_dtor(basic_ios_char *base)
11093 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
11095 TRACE("(%p)\n", this);
11097 basic_stringbuf_char_dtor(&this->strbuf);
11098 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
11101 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11102 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11103 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vbase_dtor, 4)
11104 void __thiscall basic_istringstream_char_vbase_dtor(basic_istringstream_char *this)
11106 TRACE("(%p)\n", this);
11108 basic_istringstream_char_dtor(basic_istringstream_char_to_basic_ios(this));
11109 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base));
11112 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vector_dtor, 8)
11113 basic_istringstream_char* __thiscall basic_istringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11115 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
11117 TRACE("(%p %x)\n", this, flags);
11119 if(flags & 2) {
11120 /* we have an array, with the number of elements stored before the first object */
11121 INT_PTR i, *ptr = (INT_PTR *)this-1;
11123 for(i=*ptr-1; i>=0; i--)
11124 basic_istringstream_char_vbase_dtor(this+i);
11125 operator_delete(ptr);
11126 } else {
11127 basic_istringstream_char_vbase_dtor(this);
11128 if(flags & 1)
11129 operator_delete(this);
11132 return this;
11135 /* ?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 */
11136 /* ?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 */
11137 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_rdbuf, 4)
11138 basic_stringbuf_char* __thiscall basic_istringstream_char_rdbuf(const basic_istringstream_char *this)
11140 TRACE("(%p)\n", this);
11141 return (basic_stringbuf_char*)&this->strbuf;
11144 /* ?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 */
11145 /* ?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 */
11146 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_set, 8)
11147 void __thiscall basic_istringstream_char_str_set(basic_istringstream_char *this, const basic_string_char *str)
11149 TRACE("(%p %p)\n", this, str);
11150 basic_stringbuf_char_str_set(&this->strbuf, str);
11153 /* ?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 */
11154 /* ?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 */
11155 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_get, 8)
11156 basic_string_char* __thiscall basic_istringstream_char_str_get(const basic_istringstream_char *this, basic_string_char *ret)
11158 TRACE("(%p %p)\n", this, ret);
11159 return basic_stringbuf_char_str_get(&this->strbuf, ret);
11162 static inline basic_ios_wchar* basic_istringstream_short_to_basic_ios(basic_istringstream_wchar *ptr)
11164 return (basic_ios_wchar*)((char*)ptr+basic_istringstream_short_vbtable[1]);
11167 static inline basic_istringstream_wchar* basic_istringstream_short_from_basic_ios(basic_ios_wchar *ptr)
11169 return (basic_istringstream_wchar*)((char*)ptr-basic_istringstream_short_vbtable[1]);
11172 /* ??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 */
11173 /* ??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 */
11174 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor_str, 16)
11175 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor_str(basic_istringstream_wchar *this,
11176 const basic_string_wchar *str, int mode, bool virt_init)
11178 basic_ios_wchar *basic_ios;
11180 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11182 if(virt_init) {
11183 this->base.vbtable = basic_istringstream_short_vbtable;
11184 basic_ios = basic_istream_short_get_basic_ios(&this->base);
11185 basic_ios_wchar_ctor(basic_ios);
11186 }else {
11187 basic_ios = basic_istream_short_get_basic_ios(&this->base);
11190 basic_stringbuf_short_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
11191 basic_istream_short_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11192 basic_ios->base.vtable = &basic_istringstream_short_vtable;
11193 return this;
11196 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
11197 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
11198 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor_mode, 12)
11199 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor_mode(
11200 basic_istringstream_wchar *this, int mode, bool virt_init)
11202 basic_ios_wchar *basic_ios;
11204 TRACE("(%p %d %d)\n", this, mode, virt_init);
11206 if(virt_init) {
11207 this->base.vbtable = basic_istringstream_short_vbtable;
11208 basic_ios = basic_istream_short_get_basic_ios(&this->base);
11209 basic_ios_wchar_ctor(basic_ios);
11210 }else {
11211 basic_ios = basic_istream_short_get_basic_ios(&this->base);
11214 basic_stringbuf_short_ctor_mode(&this->strbuf, mode|OPENMODE_in);
11215 basic_istream_short_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11216 basic_ios->base.vtable = &basic_istringstream_short_vtable;
11217 return this;
11220 /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
11221 /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
11222 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor, 4)
11223 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor(
11224 basic_istringstream_wchar *this)
11226 return basic_istringstream_short_ctor_mode(this, 0, TRUE);
11229 /* ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
11230 /* ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
11231 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_dtor, 4)
11232 void __thiscall basic_istringstream_short_dtor(basic_ios_wchar *base)
11234 basic_istringstream_wchar *this = basic_istringstream_short_from_basic_ios(base);
11236 TRACE("(%p)\n", this);
11238 basic_stringbuf_short_dtor(&this->strbuf);
11239 basic_istream_short_dtor(basic_istream_short_to_basic_ios(&this->base));
11242 /* ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
11243 /* ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
11244 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_vbase_dtor, 4)
11245 void __thiscall basic_istringstream_short_vbase_dtor(basic_istringstream_wchar *this)
11247 TRACE("(%p)\n", this);
11249 basic_istringstream_short_dtor(basic_istringstream_short_to_basic_ios(this));
11250 basic_ios_wchar_dtor(basic_istream_short_get_basic_ios(&this->base));
11253 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_vector_dtor, 8)
11254 basic_istringstream_wchar* __thiscall basic_istringstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11256 basic_istringstream_wchar *this = basic_istringstream_short_from_basic_ios(base);
11258 TRACE("(%p %x)\n", this, flags);
11260 if(flags & 2) {
11261 /* we have an array, with the number of elements stored before the first object */
11262 INT_PTR i, *ptr = (INT_PTR *)this-1;
11264 for(i=*ptr-1; i>=0; i--)
11265 basic_istringstream_short_vbase_dtor(this+i);
11266 operator_delete(ptr);
11267 } else {
11268 basic_istringstream_short_vbase_dtor(this);
11269 if(flags & 1)
11270 operator_delete(this);
11273 return this;
11276 /* ?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 */
11277 /* ?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 */
11278 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_rdbuf, 4)
11279 basic_stringbuf_wchar* __thiscall basic_istringstream_short_rdbuf(const basic_istringstream_wchar *this)
11281 TRACE("(%p)\n", this);
11282 return (basic_stringbuf_wchar*)&this->strbuf;
11285 /* ?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 */
11286 /* ?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 */
11287 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_str_set, 8)
11288 void __thiscall basic_istringstream_short_str_set(basic_istringstream_wchar *this, const basic_string_wchar *str)
11290 TRACE("(%p %p)\n", this, str);
11291 basic_stringbuf_short_str_set(&this->strbuf, str);
11294 /* ?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 */
11295 /* ?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 */
11296 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_str_get, 8)
11297 basic_string_wchar* __thiscall basic_istringstream_short_str_get(const basic_istringstream_wchar *this, basic_string_wchar *ret)
11299 TRACE("(%p %p)\n", this, ret);
11300 return basic_stringbuf_short_str_get(&this->strbuf, ret);
11303 static inline basic_ios_char* basic_stringstream_char_to_basic_ios(basic_stringstream_char *ptr)
11305 return (basic_ios_char*)((char*)ptr+basic_stringstream_char_vbtable1[1]);
11308 static inline basic_stringstream_char* basic_stringstream_char_from_basic_ios(basic_ios_char *ptr)
11310 return (basic_stringstream_char*)((char*)ptr-basic_stringstream_char_vbtable1[1]);
11313 /* ??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 */
11314 /* ??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 */
11315 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_str, 16)
11316 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_str(basic_stringstream_char *this,
11317 const basic_string_char *str, int mode, bool virt_init)
11319 basic_ios_char *basic_ios;
11321 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11323 if(virt_init) {
11324 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
11325 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
11326 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11327 basic_ios_char_ctor(basic_ios);
11328 }else {
11329 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11332 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode);
11333 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
11334 basic_ios->base.vtable = &basic_stringstream_char_vtable;
11335 return this;
11338 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
11339 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
11340 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_mode, 12)
11341 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_mode(
11342 basic_stringstream_char *this, int mode, bool virt_init)
11344 basic_ios_char *basic_ios;
11346 TRACE("(%p %d %d)\n", this, mode, virt_init);
11348 if(virt_init) {
11349 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
11350 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
11351 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11352 basic_ios_char_ctor(basic_ios);
11353 }else {
11354 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11357 basic_stringbuf_char_ctor_mode(&this->strbuf, mode);
11358 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
11359 basic_ios->base.vtable = &basic_stringstream_char_vtable;
11360 return this;
11363 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11364 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11365 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor, 4)
11366 basic_stringstream_char* __thiscall basic_stringstream_char_ctor(
11367 basic_stringstream_char *this)
11369 return basic_stringstream_char_ctor_mode(
11370 this, OPENMODE_out|OPENMODE_in, TRUE);
11373 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
11374 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
11375 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_dtor, 4)
11376 void __thiscall basic_stringstream_char_dtor(basic_ios_char *base)
11378 basic_stringstream_char *this = basic_stringstream_char_from_basic_ios(base);
11380 TRACE("(%p)\n", this);
11382 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
11383 basic_stringbuf_char_dtor(&this->strbuf);
11386 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11387 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11388 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vbase_dtor, 4)
11389 void __thiscall basic_stringstream_char_vbase_dtor(basic_stringstream_char *this)
11391 TRACE("(%p)\n", this);
11393 basic_stringstream_char_dtor(basic_stringstream_char_to_basic_ios(this));
11394 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
11397 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vector_dtor, 8)
11398 basic_stringstream_char* __thiscall basic_stringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11400 basic_stringstream_char *this = basic_stringstream_char_from_basic_ios(base);
11402 TRACE("(%p %x)\n", this, flags);
11404 if(flags & 2) {
11405 /* we have an array, with the number of elements stored before the first object */
11406 INT_PTR i, *ptr = (INT_PTR *)this-1;
11408 for(i=*ptr-1; i>=0; i--)
11409 basic_stringstream_char_vbase_dtor(this+i);
11410 operator_delete(ptr);
11411 } else {
11412 basic_stringstream_char_vbase_dtor(this);
11413 if(flags & 1)
11414 operator_delete(this);
11417 return this;
11420 /* ?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 */
11421 /* ?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 */
11422 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_rdbuf, 4)
11423 basic_stringbuf_char* __thiscall basic_stringstream_char_rdbuf(const basic_stringstream_char *this)
11425 TRACE("(%p)\n", this);
11426 return (basic_stringbuf_char*)&this->strbuf;
11429 /* ?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 */
11430 /* ?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 */
11431 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_set, 8)
11432 void __thiscall basic_stringstream_char_str_set(basic_stringstream_char *this, const basic_string_char *str)
11434 TRACE("(%p %p)\n", this, str);
11435 basic_stringbuf_char_str_set(&this->strbuf, str);
11438 /* ?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 */
11439 /* ?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 */
11440 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_get, 8)
11441 basic_string_char* __thiscall basic_stringstream_char_str_get(const basic_stringstream_char *this, basic_string_char *ret)
11443 TRACE("(%p %p)\n", this, ret);
11444 return basic_stringbuf_char_str_get(&this->strbuf, ret);
11447 static inline basic_ios_wchar* basic_stringstream_short_to_basic_ios(basic_stringstream_wchar *ptr)
11449 return (basic_ios_wchar*)((char*)ptr+basic_stringstream_short_vbtable1[1]);
11452 static inline basic_stringstream_wchar* basic_stringstream_short_from_basic_ios(basic_ios_wchar *ptr)
11454 return (basic_stringstream_wchar*)((char*)ptr-basic_stringstream_short_vbtable1[1]);
11457 /* ??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 */
11458 /* ??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 */
11459 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor_str, 16)
11460 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor_str(basic_stringstream_wchar *this,
11461 const basic_string_wchar *str, int mode, bool virt_init)
11463 basic_ios_wchar *basic_ios;
11465 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11467 if(virt_init) {
11468 this->base.base1.vbtable = basic_stringstream_short_vbtable1;
11469 this->base.base2.vbtable = basic_stringstream_short_vbtable2;
11470 basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
11471 basic_ios_short_ctor(basic_ios);
11472 }else {
11473 basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
11476 basic_stringbuf_short_ctor_str(&this->strbuf, str, mode);
11477 basic_iostream_short_ctor(&this->base, &this->strbuf.base, FALSE);
11478 basic_ios->base.vtable = &basic_stringstream_short_vtable;
11479 return this;
11482 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
11483 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
11484 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor_mode, 12)
11485 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor_mode(
11486 basic_stringstream_wchar *this, int mode, bool virt_init)
11488 basic_ios_wchar *basic_ios;
11490 TRACE("(%p %d %d)\n", this, mode, virt_init);
11492 if(virt_init) {
11493 this->base.base1.vbtable = basic_stringstream_short_vbtable1;
11494 this->base.base2.vbtable = basic_stringstream_short_vbtable2;
11495 basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
11496 basic_ios_short_ctor(basic_ios);
11497 }else {
11498 basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
11501 basic_stringbuf_short_ctor_mode(&this->strbuf, mode);
11502 basic_iostream_short_ctor(&this->base, &this->strbuf.base, FALSE);
11503 basic_ios->base.vtable = &basic_stringstream_short_vtable;
11504 return this;
11507 /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
11508 /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
11509 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor, 4)
11510 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor(
11511 basic_stringstream_wchar *this)
11513 return basic_stringstream_short_ctor_mode(
11514 this, OPENMODE_out|OPENMODE_in, TRUE);
11517 /* ??1?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
11518 /* ??1?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
11519 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_dtor, 4)
11520 void __thiscall basic_stringstream_short_dtor(basic_ios_wchar *base)
11522 basic_stringstream_wchar *this = basic_stringstream_short_from_basic_ios(base);
11524 TRACE("(%p)\n", this);
11526 basic_iostream_short_dtor(basic_iostream_short_to_basic_ios(&this->base));
11527 basic_stringbuf_short_dtor(&this->strbuf);
11530 /* ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
11531 /* ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
11532 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_vbase_dtor, 4)
11533 void __thiscall basic_stringstream_short_vbase_dtor(basic_stringstream_wchar *this)
11535 TRACE("(%p)\n", this);
11537 basic_stringstream_short_dtor(basic_stringstream_short_to_basic_ios(this));
11538 basic_ios_wchar_dtor(basic_istream_short_get_basic_ios(&this->base.base1));
11541 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_vector_dtor, 8)
11542 basic_stringstream_wchar* __thiscall basic_stringstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11544 basic_stringstream_wchar *this = basic_stringstream_short_from_basic_ios(base);
11546 TRACE("(%p %x)\n", this, flags);
11548 if(flags & 2) {
11549 /* we have an array, with the number of elements stored before the first object */
11550 INT_PTR i, *ptr = (INT_PTR *)this-1;
11552 for(i=*ptr-1; i>=0; i--)
11553 basic_stringstream_short_vbase_dtor(this+i);
11554 operator_delete(ptr);
11555 } else {
11556 basic_stringstream_short_vbase_dtor(this);
11557 if(flags & 1)
11558 operator_delete(this);
11561 return this;
11564 /* ?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 */
11565 /* ?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 */
11566 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_rdbuf, 4)
11567 basic_stringbuf_wchar* __thiscall basic_stringstream_short_rdbuf(const basic_stringstream_wchar *this)
11569 TRACE("(%p)\n", this);
11570 return (basic_stringbuf_wchar*)&this->strbuf;
11573 /* ?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 */
11574 /* ?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 */
11575 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_str_set, 8)
11576 void __thiscall basic_stringstream_short_str_set(basic_stringstream_wchar *this, const basic_string_wchar *str)
11578 TRACE("(%p %p)\n", this, str);
11579 basic_stringbuf_short_str_set(&this->strbuf, str);
11582 /* ?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 */
11583 /* ?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 */
11584 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_str_get, 8)
11585 basic_string_wchar* __thiscall basic_stringstream_short_str_get(const basic_stringstream_wchar *this, basic_string_wchar *ret)
11587 TRACE("(%p %p)\n", this, ret);
11588 return basic_stringbuf_short_str_get(&this->strbuf, ret);
11591 /* ?_Init@strstreambuf@std@@IAEXHPAD0H@Z */
11592 /* ?_Init@strstreambuf@std@@IEAAX_JPEAD1H@Z */
11593 DEFINE_THISCALL_WRAPPER(strstreambuf__Init, 20)
11594 void __thiscall strstreambuf__Init(strstreambuf *this, streamsize len, char *g, char *p, int mode)
11596 TRACE("(%p %Id %p %p %d)\n", this, len, g, p, mode);
11598 this->minsize = 32;
11599 this->endsave = NULL;
11600 this->strmode = mode;
11601 this->palloc = NULL;
11602 this->pfree = NULL;
11604 if(!g) {
11605 this->strmode |= STRSTATE_Dynamic;
11606 if(len > this->minsize)
11607 this->minsize = len;
11608 this->seekhigh = NULL;
11609 return;
11612 if(len < 0)
11613 len = INT_MAX;
11614 else if(!len)
11615 len = strlen(g);
11617 this->seekhigh = g+len;
11618 basic_streambuf_char_setg(&this->base, g, g, p ? p : this->seekhigh);
11619 if(p)
11620 basic_streambuf_char_setp(&this->base, p, this->seekhigh);
11623 /* ??0strstreambuf@std@@QAE@PACH0@Z */
11624 /* ??0strstreambuf@std@@QEAA@PEAC_J0@Z */
11625 /* ??0strstreambuf@std@@QAE@PADH0@Z */
11626 /* ??0strstreambuf@std@@QEAA@PEAD_J0@Z */
11627 /* ??0strstreambuf@std@@QAE@PAEH0@Z */
11628 /* ??0strstreambuf@std@@QEAA@PEAE_J0@Z */
11629 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get_put, 16)
11630 strstreambuf* __thiscall strstreambuf_ctor_get_put(strstreambuf *this, char *g, streamsize len, char *p)
11632 TRACE("(%p %p %Id %p)\n", this, g, len, p);
11634 basic_streambuf_char_ctor(&this->base);
11635 this->base.vtable = &strstreambuf_vtable;
11637 strstreambuf__Init(this, len, g, p, 0);
11638 return this;
11641 /* ??0strstreambuf@std@@QAE@H@Z */
11642 /* ??0strstreambuf@std@@QEAA@_J@Z */
11643 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_len, 8)
11644 strstreambuf* __thiscall strstreambuf_ctor_len(strstreambuf *this, streamsize len)
11646 return strstreambuf_ctor_get_put(this, NULL, len, NULL);
11649 /* ??0strstreambuf@std@@QAE@P6APAXI@ZP6AXPAX@Z@Z */
11650 /* ??0strstreambuf@std@@QEAA@P6APEAX_K@ZP6AXPEAX@Z@Z */
11651 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_alloc, 12)
11652 strstreambuf* __thiscall strstreambuf_ctor_alloc(strstreambuf *this, void* (__cdecl *palloc)(size_t), void (__cdecl *pfree)(void*))
11654 TRACE("(%p %p %p)\n", this, palloc, pfree);
11656 strstreambuf_ctor_get_put(this, NULL, 0, NULL);
11657 this->palloc = palloc;
11658 this->pfree = pfree;
11659 return this;
11662 /* ??0strstreambuf@std@@QAE@PBCH@Z */
11663 /* ??0strstreambuf@std@@QEAA@PEBC_J@Z */
11664 /* ??0strstreambuf@std@@QAE@PBDH@Z */
11665 /* ??0strstreambuf@std@@QEAA@PEBD_J@Z */
11666 /* ??0strstreambuf@std@@QAE@PBEH@Z */
11667 /* ??0strstreambuf@std@@QEAA@PEBE_J@Z */
11668 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get, 12)
11669 strstreambuf* __thiscall strstreambuf_ctor_get(strstreambuf *this, const char *g, streamsize len)
11671 TRACE("(%p %p %Id)\n", this, g, len);
11673 strstreambuf_ctor_get_put(this, (char*)g, len, NULL);
11674 this->strmode |= STRSTATE_Constant;
11675 return this;
11678 /* ??_Fstrstreambuf@std@@QAEXXZ */
11679 /* ??_Fstrstreambuf@std@@QEAAXXZ */
11680 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor, 4)
11681 strstreambuf* __thiscall strstreambuf_ctor(strstreambuf *this)
11683 return strstreambuf_ctor_get_put(this, NULL, 0, NULL);
11686 /* ?_Tidy@strstreambuf@std@@IAEXXZ */
11687 /* ?_Tidy@strstreambuf@std@@IEAAXXZ */
11688 DEFINE_THISCALL_WRAPPER(strstreambuf__Tidy, 4)
11689 void __thiscall strstreambuf__Tidy(strstreambuf *this)
11691 TRACE("(%p)\n", this);
11693 if((this->strmode & STRSTATE_Allocated) && !(this->strmode & STRSTATE_Frozen)) {
11694 if(this->pfree)
11695 this->pfree(basic_streambuf_char_eback(&this->base));
11696 else
11697 operator_delete(basic_streambuf_char_eback(&this->base));
11700 this->endsave = NULL;
11701 this->seekhigh = NULL;
11702 this->strmode &= ~(STRSTATE_Allocated | STRSTATE_Frozen);
11703 basic_streambuf_char_setg(&this->base, NULL, NULL, NULL);
11704 basic_streambuf_char_setp(&this->base, NULL, NULL);
11707 /* ??1strstreambuf@std@@UAE@XZ */
11708 /* ??1strstreambuf@std@@UEAA@XZ */
11709 DEFINE_THISCALL_WRAPPER(strstreambuf_dtor, 4)
11710 void __thiscall strstreambuf_dtor(strstreambuf *this)
11712 TRACE("(%p)\n", this);
11714 strstreambuf__Tidy(this);
11715 basic_streambuf_char_dtor(&this->base);
11718 DEFINE_THISCALL_WRAPPER(strstreambuf_vector_dtor, 8)
11719 strstreambuf* __thiscall strstreambuf_vector_dtor(strstreambuf *this, unsigned int flags)
11721 TRACE("(%p %x)\n", this, flags);
11722 if(flags & 2) {
11723 /* we have an array, with the number of elements stored before the first object */
11724 INT_PTR i, *ptr = (INT_PTR *)this-1;
11726 for(i=*ptr-1; i>=0; i--)
11727 strstreambuf_dtor(this+i);
11728 operator_delete(ptr);
11729 } else {
11730 strstreambuf_dtor(this);
11731 if(flags & 1)
11732 operator_delete(this);
11735 return this;
11738 /* ?freeze@strstreambuf@std@@QAEX_N@Z */
11739 /* ?freeze@strstreambuf@std@@QEAAX_N@Z */
11740 DEFINE_THISCALL_WRAPPER(strstreambuf_freeze, 8)
11741 void __thiscall strstreambuf_freeze(strstreambuf *this, bool freeze)
11743 TRACE("(%p %d)\n", this, freeze);
11745 if(!freeze == !(this->strmode & STRSTATE_Frozen))
11746 return;
11748 if(freeze) {
11749 this->strmode |= STRSTATE_Frozen;
11750 this->endsave = basic_streambuf_char_epptr(&this->base);
11751 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
11752 basic_streambuf_char_pptr(&this->base), basic_streambuf_char_eback(&this->base));
11753 }else {
11754 this->strmode &= ~STRSTATE_Frozen;
11755 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
11756 basic_streambuf_char_pptr(&this->base), this->endsave);
11760 /* ?str@strstreambuf@std@@QAEPADXZ */
11761 /* ?str@strstreambuf@std@@QEAAPEADXZ */
11762 DEFINE_THISCALL_WRAPPER(strstreambuf_str, 4)
11763 char* __thiscall strstreambuf_str(strstreambuf *this)
11765 TRACE("(%p)\n", this);
11767 strstreambuf_freeze(this, TRUE);
11768 return basic_streambuf_char_gptr(&this->base);
11771 /* ?pcount@strstreambuf@std@@QBEHXZ */
11772 /* ?pcount@strstreambuf@std@@QEBA_JXZ */
11773 DEFINE_THISCALL_WRAPPER(strstreambuf_pcount, 4)
11774 streamsize __thiscall strstreambuf_pcount(const strstreambuf *this)
11776 char *ppos = basic_streambuf_char_pptr(&this->base);
11778 TRACE("(%p)\n", this);
11780 return ppos ? ppos-basic_streambuf_char_pbase(&this->base) : 0;
11783 /* ?overflow@strstreambuf@std@@MAEHH@Z */
11784 /* ?overflow@strstreambuf@std@@MEAAHH@Z */
11785 DEFINE_THISCALL_WRAPPER(strstreambuf_overflow, 8)
11786 int __thiscall strstreambuf_overflow(strstreambuf *this, int c)
11788 size_t old_size, size;
11789 char *ptr, *buf;
11791 TRACE("(%p %d)\n", this, c);
11793 if(c == EOF)
11794 return !EOF;
11796 if(this->strmode & STRSTATE_Frozen)
11797 return EOF;
11799 ptr = basic_streambuf_char_pptr(&this->base);
11800 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
11801 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
11803 if(!(this->strmode & STRSTATE_Dynamic) || (this->strmode & STRSTATE_Constant))
11804 return EOF;
11806 ptr = basic_streambuf_char_eback(&this->base);
11807 old_size = ptr ? basic_streambuf_char_epptr(&this->base) - ptr : 0;
11809 size = old_size + old_size/2;
11810 if(size < this->minsize)
11811 size = this->minsize;
11813 if(this->palloc)
11814 buf = this->palloc(size);
11815 else
11816 buf = operator_new(size);
11817 if(!buf)
11818 return EOF;
11820 memcpy(buf, ptr, old_size);
11821 if(this->strmode & STRSTATE_Allocated) {
11822 if(this->pfree)
11823 this->pfree(ptr);
11824 else
11825 operator_delete(ptr);
11828 this->strmode |= STRSTATE_Allocated;
11829 if(!old_size) {
11830 this->seekhigh = buf;
11831 basic_streambuf_char_setp(&this->base, buf, buf+size);
11832 basic_streambuf_char_setg(&this->base, buf, buf, buf);
11833 }else {
11834 this->seekhigh = this->seekhigh-ptr+buf;
11835 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base)-ptr+buf,
11836 basic_streambuf_char_pptr(&this->base)-ptr+buf, buf+size);
11837 basic_streambuf_char_setg(&this->base, buf, basic_streambuf_char_gptr(&this->base)-ptr+buf,
11838 basic_streambuf_char_pptr(&this->base));
11841 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
11844 /* ?pbackfail@strstreambuf@std@@MAEHH@Z */
11845 /* ?pbackfail@strstreambuf@std@@MEAAHH@Z */
11846 DEFINE_THISCALL_WRAPPER(strstreambuf_pbackfail, 8)
11847 int __thiscall strstreambuf_pbackfail(strstreambuf *this, int c)
11849 char *ptr = basic_streambuf_char_gptr(&this->base);
11851 TRACE("(%p %d)\n", this, c);
11853 if(ptr<=basic_streambuf_char_eback(&this->base)
11854 || ((this->strmode & STRSTATE_Constant) && c!=ptr[-1]))
11855 return EOF;
11857 basic_streambuf_char_gbump(&this->base, -1);
11858 if(c == EOF)
11859 return !EOF;
11860 if(this->strmode & STRSTATE_Constant)
11861 return (unsigned char)c;
11863 return (unsigned char)(ptr[0] = c);
11866 /* ?seekoff@strstreambuf@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
11867 /* ?seekoff@strstreambuf@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
11868 /* ?seekoff@strstreambuf@std@@MAE?AV?$fpos@H@2@JHH@Z */
11869 /* ?seekoff@strstreambuf@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
11870 DEFINE_THISCALL_WRAPPER(strstreambuf_seekoff, 20)
11871 fpos_int* __thiscall strstreambuf_seekoff(strstreambuf *this, fpos_int *ret, streamoff off, int way, int mode)
11873 char *eback = basic_streambuf_char_eback(&this->base);
11874 char *pptr = basic_streambuf_char_pptr(&this->base);
11875 char *gptr = basic_streambuf_char_gptr(&this->base);
11877 TRACE("(%p %p %Id %d %d)\n", this, ret, off, way, mode);
11879 ret->off = 0;
11880 ret->state = 0;
11882 if(pptr > this->seekhigh)
11883 this->seekhigh = pptr;
11885 if((mode & OPENMODE_in) && gptr) {
11886 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
11887 off += gptr-eback;
11888 else if(way == SEEKDIR_end)
11889 off += this->seekhigh-eback;
11890 else if(way != SEEKDIR_beg)
11891 off = -1;
11893 if(off<0 || off>this->seekhigh-eback) {
11894 off = -1;
11895 }else {
11896 basic_streambuf_char_gbump(&this->base, eback-gptr+off);
11897 if((mode & OPENMODE_out) && pptr) {
11898 basic_streambuf_char_setp_next(&this->base, eback,
11899 gptr, basic_streambuf_char_epptr(&this->base));
11902 }else if((mode & OPENMODE_out) && pptr) {
11903 if(way == SEEKDIR_cur)
11904 off += pptr-eback;
11905 else if(way == SEEKDIR_end)
11906 off += this->seekhigh-eback;
11907 else if(way != SEEKDIR_beg)
11908 off = -1;
11910 if(off<0 || off>this->seekhigh-eback)
11911 off = -1;
11912 else
11913 basic_streambuf_char_pbump(&this->base, eback-pptr+off);
11914 }else {
11915 off = -1;
11918 ret->pos = off;
11919 return ret;
11922 /* ?seekpos@strstreambuf@std@@MAE?AV?$fpos@H@2@V32@H@Z */
11923 /* ?seekpos@strstreambuf@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
11924 DEFINE_THISCALL_WRAPPER(strstreambuf_seekpos, 36)
11925 fpos_int* __thiscall strstreambuf_seekpos(strstreambuf *this, fpos_int *ret, fpos_int pos, int mode)
11927 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
11929 if(pos.off==-1 && pos.pos==0 && pos.state==0) {
11930 *ret = pos;
11931 return ret;
11934 return strstreambuf_seekoff(this, ret, pos.pos+pos.off, SEEKDIR_beg, mode);
11937 /* ?underflow@strstreambuf@std@@MAEHXZ */
11938 /* ?underflow@strstreambuf@std@@MEAAHXZ */
11939 DEFINE_THISCALL_WRAPPER(strstreambuf_underflow, 4)
11940 int __thiscall strstreambuf_underflow(strstreambuf *this)
11942 char *gptr = basic_streambuf_char_gptr(&this->base);
11943 char *pptr;
11945 TRACE("(%p)\n", this);
11947 if(!gptr)
11948 return EOF;
11950 if(gptr < basic_streambuf_char_egptr(&this->base))
11951 return (unsigned char)(*gptr);
11953 pptr = basic_streambuf_char_gptr(&this->base);
11954 if(pptr > this->seekhigh)
11955 this->seekhigh = pptr;
11957 if(this->seekhigh <= gptr)
11958 return EOF;
11960 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base),
11961 gptr, this->seekhigh);
11962 return (unsigned char)(*gptr);
11965 static inline basic_ios_char* ostrstream_to_basic_ios(ostrstream *ptr)
11967 return (basic_ios_char*)((char*)ptr+ostrstream_vbtable[1]);
11970 static inline ostrstream* ostrstream_from_basic_ios(basic_ios_char *ptr)
11972 return (ostrstream*)((char*)ptr-ostrstream_vbtable[1]);
11975 /* ??0ostrstream@std@@QAE@PADHH@Z */
11976 DEFINE_THISCALL_WRAPPER(ostrstream_ctor, 20)
11977 ostrstream* __thiscall ostrstream_ctor(ostrstream *this, char *buf, streamsize size, int mode, bool virt_init)
11979 basic_ios_char *basic_ios;
11981 TRACE("(%p %p %Id %d %d)\n", this, buf, size, mode, virt_init);
11983 if(virt_init) {
11984 this->base.vbtable = ostrstream_vbtable;
11985 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11986 basic_ios_char_ctor(basic_ios);
11987 }else {
11988 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11991 strstreambuf_ctor_get_put(&this->buf, buf, size,
11992 buf && (mode & OPENMODE_app) ? buf+strlen(buf) : buf);
11993 basic_ostream_char_ctor(&this->base, &this->buf.base, FALSE, TRUE, FALSE);
11994 basic_ios->base.vtable = &ostrstream_vtable;
11995 return this;
11998 /* ??1ostrstream@std@@UAE@XZ */
11999 /* ??1ostrstream@std@@UEAA@XZ */
12000 DEFINE_THISCALL_WRAPPER(ostrstream_dtor, 4)
12001 void __thiscall ostrstream_dtor(basic_ios_char *base)
12003 ostrstream *this = ostrstream_from_basic_ios(base);
12005 TRACE("(%p)\n", this);
12007 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
12008 strstreambuf_dtor(&this->buf);
12011 static void ostrstream_vbase_dtor(ostrstream *this)
12013 TRACE("(%p)\n", this);
12015 ostrstream_dtor(ostrstream_to_basic_ios(this));
12016 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
12019 DEFINE_THISCALL_WRAPPER(ostrstream_vector_dtor, 8)
12020 ostrstream* __thiscall ostrstream_vector_dtor(basic_ios_char *base, unsigned int flags)
12022 ostrstream *this = ostrstream_from_basic_ios(base);
12024 TRACE("(%p %x)\n", this, flags);
12026 if(flags & 2) {
12027 /* we have an array, with the number of elements stored before the first object */
12028 INT_PTR i, *ptr = (INT_PTR *)this-1;
12030 for(i=*ptr-1; i>=0; i--)
12031 ostrstream_vbase_dtor(this+i);
12032 operator_delete(ptr);
12033 } else {
12034 ostrstream_vbase_dtor(this);
12035 if(flags & 1)
12036 operator_delete(this);
12039 return this;
12042 static inline istrstream* istrstream_from_basic_ios(basic_ios_char *ptr)
12044 return (istrstream*)((char*)ptr-istrstream_vbtable[1]);
12047 /* ??1istrstream@std@@UAE@XZ */
12048 /* ??1istrstream@std@@UEAA@XZ */
12049 DEFINE_THISCALL_WRAPPER(istrstream_dtor, 4)
12050 void __thiscall istrstream_dtor(basic_ios_char *base)
12052 istrstream *this = istrstream_from_basic_ios(base);
12054 TRACE("(%p)\n", this);
12056 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
12057 strstreambuf_dtor(&this->buf);
12060 static inline basic_ios_char* strstream_to_basic_ios(strstream *ptr)
12062 return (basic_ios_char*)((char*)ptr+strstream_vbtable1[1]);
12065 static inline strstream* strstream_from_basic_ios(basic_ios_char *ptr)
12067 return (strstream*)((char*)ptr-strstream_vbtable1[1]);
12070 /* ??$?6MDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@M@0@@Z */
12071 /* ??$?6MDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@M@0@@Z */
12072 basic_ostream_char* __cdecl basic_ostream_char_print_complex_float(basic_ostream_char *ostr, const complex_float *val)
12074 struct {
12075 basic_ostringstream_char obj;
12076 basic_ios_char vbase;
12077 } oss;
12078 ios_base *ostringstream_ios_base, *ostream_ios_base;
12079 locale loc;
12080 basic_string_char str;
12081 basic_ostringstream_char_ctor(&oss.obj);
12082 ostringstream_ios_base = &oss.vbase.base;
12083 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
12084 TRACE("(%p %p)\n", ostr, val);
12086 ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base));
12087 locale_dtor(&loc);
12088 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
12089 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
12091 basic_ostream_char_print_ch(&oss.obj.base, '(');
12092 basic_ostream_char_print_float(&oss.obj.base, val->real);
12093 basic_ostream_char_print_ch(&oss.obj.base, ',');
12094 basic_ostream_char_print_float(&oss.obj.base, val->imag);
12095 basic_ostream_char_print_ch(&oss.obj.base, ')');
12097 basic_ostringstream_char_str_get(&oss.obj, &str);
12098 basic_ostringstream_char_dtor(&oss.vbase);
12099 basic_ostream_char_print_bstr(ostr, &str);
12100 MSVCP_basic_string_char_dtor(&str);
12101 return ostr;
12104 /* ??$?6NDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@N@0@@Z */
12105 /* ??$?6NDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@N@0@@Z */
12106 basic_ostream_char* __cdecl basic_ostream_char_print_complex_double(basic_ostream_char *ostr, const complex_double *val)
12108 struct {
12109 basic_ostringstream_char obj;
12110 basic_ios_char vbase;
12111 } oss;
12112 ios_base *ostringstream_ios_base, *ostream_ios_base;
12113 locale loc;
12114 basic_string_char str;
12115 basic_ostringstream_char_ctor(&oss.obj);
12116 ostringstream_ios_base = &oss.vbase.base;
12117 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
12118 TRACE("(%p %p)\n", ostr, val);
12120 ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base));
12121 locale_dtor(&loc);
12122 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
12123 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
12125 basic_ostream_char_print_ch(&oss.obj.base, '(');
12126 basic_ostream_char_print_double(&oss.obj.base, val->real);
12127 basic_ostream_char_print_ch(&oss.obj.base, ',');
12128 basic_ostream_char_print_double(&oss.obj.base, val->imag);
12129 basic_ostream_char_print_ch(&oss.obj.base, ')');
12131 basic_ostringstream_char_str_get(&oss.obj, &str);
12132 basic_ostringstream_char_dtor(&oss.vbase);
12133 basic_ostream_char_print_bstr(ostr, &str);
12134 MSVCP_basic_string_char_dtor(&str);
12135 return ostr;
12138 /* ??$?6odu?$char_traits@d@std@@@std@@yaaav?$basic_ostream@du?$char_traits@d@std@@@0@aav10@abv?$complex@o@0@@Z */
12139 /* ??$?6ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@O@0@@Z */
12140 basic_ostream_char* __cdecl basic_ostream_char_print_complex_ldouble(basic_ostream_char *ostr, const complex_double *val)
12142 struct {
12143 basic_ostringstream_char obj;
12144 basic_ios_char vbase;
12145 } oss;
12146 ios_base *ostringstream_ios_base, *ostream_ios_base;
12147 locale loc;
12148 basic_string_char str;
12149 basic_ostringstream_char_ctor(&oss.obj);
12150 ostringstream_ios_base = &oss.vbase.base;
12151 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
12152 TRACE("(%p %p)\n", ostr, val);
12154 ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base));
12155 locale_dtor(&loc);
12156 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
12157 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
12159 basic_ostream_char_print_ch(&oss.obj.base, '(');
12160 basic_ostream_char_print_ldouble(&oss.obj.base, val->real);
12161 basic_ostream_char_print_ch(&oss.obj.base, ',');
12162 basic_ostream_char_print_ldouble(&oss.obj.base, val->imag);
12163 basic_ostream_char_print_ch(&oss.obj.base, ')');
12165 basic_ostringstream_char_str_get(&oss.obj, &str);
12166 basic_ostringstream_char_dtor(&oss.vbase);
12167 basic_ostream_char_print_bstr(ostr, &str);
12168 MSVCP_basic_string_char_dtor(&str);
12169 return ostr;
12172 /* ??0strstream@std@@QAE@PADHH@Z */
12173 /* ??0strstream@std@@QEAA@PEAD_JH@Z */
12174 DEFINE_THISCALL_WRAPPER(strstream_ctor, 20)
12175 strstream* __thiscall strstream_ctor(strstream *this, char *buf, streamsize size, int mode, bool virt_init)
12177 basic_ios_char *basic_ios;
12179 TRACE("(%p %p %Id %d %d)\n", this, buf, size, mode, virt_init);
12181 if(virt_init) {
12182 this->base.base1.vbtable = strstream_vbtable1;
12183 this->base.base2.vbtable = strstream_vbtable2;
12184 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12185 basic_ios_char_ctor(basic_ios);
12186 }else {
12187 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12190 strstreambuf_ctor_get_put(&this->buf, buf, size,
12191 buf && (mode & OPENMODE_app) ? buf+strlen(buf) : buf);
12192 basic_iostream_char_ctor(&this->base, &this->buf.base, FALSE);
12193 basic_ios->base.vtable = &strstream_vtable;
12194 return this;
12197 /* ??1strstream@std@@UAE@XZ */
12198 /* ??1strstream@std@@UEAA@XZ */
12199 DEFINE_THISCALL_WRAPPER(strstream_dtor, 4)
12200 void __thiscall strstream_dtor(basic_ios_char *base)
12202 strstream *this = strstream_from_basic_ios(base);
12204 TRACE("(%p)\n", this);
12206 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
12207 strstreambuf_dtor(&this->buf);
12210 static void strstream_vbase_dtor(strstream *this)
12212 TRACE("(%p)\n", this);
12214 strstream_dtor(strstream_to_basic_ios(this));
12215 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
12218 DEFINE_THISCALL_WRAPPER(strstream_vector_dtor, 8)
12219 strstream* __thiscall strstream_vector_dtor(basic_ios_char *base, unsigned int flags)
12221 strstream *this = strstream_from_basic_ios(base);
12223 TRACE("(%p %x)\n", this, flags);
12225 if(flags & 2) {
12226 /* we have an array, with the number of elements stored before the first object */
12227 INT_PTR i, *ptr = (INT_PTR *)this-1;
12229 for(i=*ptr-1; i>=0; i--)
12230 strstream_vbase_dtor(this+i);
12231 operator_delete(ptr);
12232 } else {
12233 strstream_vbase_dtor(this);
12234 if(flags & 1)
12235 operator_delete(this);
12238 return this;
12241 static void __cdecl setprecision_func(ios_base *base, streamsize prec)
12243 ios_base_precision_set(base, prec);
12246 /* ?setprecision@std@@YA?AU?$_Smanip@H@1@H@Z */
12247 /* ?setprecision@std@@YA?AU?$_Smanip@_J@1@_J@Z */
12248 manip_streamsize* __cdecl setprecision(manip_streamsize *ret, streamsize prec)
12250 TRACE("(%p %Id)\n", ret, prec);
12252 ret->pfunc = setprecision_func;
12253 ret->arg = prec;
12254 return ret;
12257 static void __cdecl setw_func(ios_base *base, streamsize width)
12259 ios_base_width_set(base, width);
12262 /* ?setw@std@@YA?AU?$_Smanip@H@1@H@Z */
12263 /* ?setw@std@@YA?AU?$_Smanip@_J@1@_J@Z */
12264 manip_streamsize* __cdecl setw(manip_streamsize *ret, streamsize width)
12266 TRACE("(%p %Id)\n", ret, width);
12268 ret->pfunc = setw_func;
12269 ret->arg = width;
12270 return ret;
12273 static void __cdecl resetioflags_func(ios_base *base, int mask)
12275 ios_base_setf_mask(base, 0, mask);
12278 /* ?resetiosflags@std@@YA?AU?$_Smanip@H@1@H@Z */
12279 manip_int* __cdecl resetiosflags(manip_int *ret, int mask)
12281 TRACE("(%p %d)\n", ret, mask);
12283 ret->pfunc = resetioflags_func;
12284 ret->arg = mask;
12285 return ret;
12288 static void __cdecl setiosflags_func(ios_base *base, int mask)
12290 ios_base_setf_mask(base, FMTFLAG_mask, mask);
12293 /* ?setiosflags@std@@YA?AU?$_Smanip@H@1@H@Z */
12294 manip_int* __cdecl setiosflags(manip_int *ret, int mask)
12296 TRACE("(%p %d)\n", ret, mask);
12298 ret->pfunc = setiosflags_func;
12299 ret->arg = mask;
12300 return ret;
12303 static void __cdecl setbase_func(ios_base *base, int set_base)
12305 if(set_base == 10)
12306 set_base = FMTFLAG_dec;
12307 else if(set_base == 8)
12308 set_base = FMTFLAG_oct;
12309 else if(set_base == 16)
12310 set_base = FMTFLAG_hex;
12311 else
12312 set_base = 0;
12314 ios_base_setf_mask(base, set_base, FMTFLAG_basefield);
12317 /* ?setbase@std@@YA?AU?$_Smanip@H@1@H@Z */
12318 manip_int* __cdecl setbase(manip_int *ret, int base)
12320 TRACE("(%p %d)\n", ret, base);
12322 ret->pfunc = setbase_func;
12323 ret->arg = base;
12324 return ret;
12327 static basic_filebuf_char filebuf_char_stdin;
12328 /* ?cin@std@@3V?$basic_istream@DU?$char_traits@D@std@@@1@A */
12329 struct {
12330 basic_istream_char obj;
12331 basic_ios_char vbase;
12332 } cin = { { 0 } };
12333 /* ?_Ptr_cin@std@@3PAV?$basic_istream@DU?$char_traits@D@std@@@1@A */
12334 /* ?_Ptr_cin@std@@3PEAV?$basic_istream@DU?$char_traits@D@std@@@1@EA */
12335 basic_istream_char *_Ptr_cin = &cin.obj;
12337 static basic_filebuf_wchar filebuf_short_stdin;
12338 /* ?wcin@std@@3V?$basic_istream@GU?$char_traits@G@std@@@1@A */
12339 struct {
12340 basic_istream_wchar obj;
12341 basic_ios_wchar vbase;
12342 } ucin = { { 0 } };
12343 /* ?_Ptr_wcin@std@@3PAV?$basic_istream@GU?$char_traits@G@std@@@1@A */
12344 /* ?_Ptr_wcin@std@@3PEAV?$basic_istream@GU?$char_traits@G@std@@@1@EA */
12345 basic_istream_wchar *_Ptr_ucin = &ucin.obj;
12347 static basic_filebuf_char filebuf_char_stdout;
12348 /* ?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12349 struct {
12350 basic_ostream_char obj;
12351 basic_ios_char vbase;
12352 } cout = { { 0 } };
12353 /* ?_Ptr_cout@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12354 /* ?_Ptr_cout@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
12355 basic_ostream_char *_Ptr_cout = &cout.obj;
12357 static basic_filebuf_wchar filebuf_short_stdout;
12358 /* ?wcout@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12359 struct {
12360 basic_ostream_wchar obj;
12361 basic_ios_wchar vbase;
12362 } ucout = { { 0 } };
12363 /* ?_Ptr_wcout@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12364 /* ?_Ptr_wcout@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
12365 basic_ostream_wchar *_Ptr_ucout = &ucout.obj;
12367 static basic_filebuf_char filebuf_char_stderr;
12368 /* ?cerr@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12369 struct {
12370 basic_ostream_char obj;
12371 basic_ios_char vbase;
12372 } cerr = { { 0 } };
12373 /* ?_Ptr_cerr@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12374 /* ?_Ptr_cerr@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
12375 basic_ostream_char *_Ptr_cerr = &cerr.obj;
12377 static basic_filebuf_wchar filebuf_short_stderr;
12378 /* ?wcerr@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12379 struct {
12380 basic_ostream_wchar obj;
12381 basic_ios_wchar vbase;
12382 } ucerr = { { 0 } };
12383 /* ?_Ptr_wcerr@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12384 /* ?_Ptr_wcerr@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
12385 basic_ostream_wchar *_Ptr_ucerr = &ucerr.obj;
12387 static basic_filebuf_char filebuf_char_log;
12388 /* ?clog@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12389 struct {
12390 basic_ostream_char obj;
12391 basic_ios_char vbase;
12392 } MSVCP_clog = { { 0 } };
12393 /* ?_Ptr_clog@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12394 /* ?_Ptr_clog@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
12395 basic_ostream_char *_Ptr_clog = &MSVCP_clog.obj;
12397 static basic_filebuf_wchar filebuf_short_log;
12398 /* ?wclog@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12399 struct {
12400 basic_ostream_wchar obj;
12401 basic_ios_wchar vbase;
12402 } uclog = { { 0 } };
12403 /* ?_Ptr_wclog@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12404 /* ?_Ptr_wclog@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
12405 basic_ostream_wchar *_Ptr_uclog = &uclog.obj;
12407 /* ?_Init_cnt@Init@ios_base@std@@0HA */
12408 int ios_base_Init__Init_cnt = -1;
12410 /* ?_Init_cnt_func@Init@ios_base@std@@CAAAHXZ */
12411 /* ?_Init_cnt_func@Init@ios_base@std@@CAAEAHXZ */
12412 int* __cdecl ios_base_Init__Init_cnt_func(void)
12414 return &ios_base_Init__Init_cnt;
12417 /* ?_Init_ctor@Init@ios_base@std@@CAXPAV123@@Z */
12418 /* ?_Init_ctor@Init@ios_base@std@@CAXPEAV123@@Z */
12419 void __cdecl ios_base_Init__Init_ctor(void *this)
12421 TRACE("(%p)\n", this);
12423 if(ios_base_Init__Init_cnt < 0)
12424 ios_base_Init__Init_cnt = 1;
12425 else
12426 ios_base_Init__Init_cnt++;
12429 /* ??0Init@ios_base@std@@QAE@XZ */
12430 /* ??0Init@ios_base@std@@QEAA@XZ */
12431 DEFINE_THISCALL_WRAPPER(ios_base_Init_ctor, 4)
12432 void* __thiscall ios_base_Init_ctor(void *this)
12434 ios_base_Init__Init_ctor(this);
12435 return this;
12438 /* ?_Init_dtor@Init@ios_base@std@@CAXPAV123@@Z */
12439 /* ?_Init_dtor@Init@ios_base@std@@CAXPEAV123@@Z */
12440 void __cdecl ios_base_Init__Init_dtor(void *this)
12442 TRACE("(%p)\n", this);
12444 ios_base_Init__Init_cnt--;
12445 if(!ios_base_Init__Init_cnt) {
12446 basic_ostream_char_flush(&cout.obj);
12447 basic_ostream_char_flush(&cerr.obj);
12448 basic_ostream_char_flush(&MSVCP_clog.obj);
12452 /* ??1Init@ios_base@std@@QAE@XZ */
12453 /* ??1Init@ios_base@std@@QEAA@XZ */
12454 DEFINE_THISCALL_WRAPPER(ios_base_Init_dtor, 4)
12455 void __thiscall ios_base_Init_dtor(void *this)
12457 ios_base_Init__Init_dtor(this);
12460 /* ??4Init@ios_base@std@@QAEAAV012@ABV012@@Z */
12461 /* ??4Init@ios_base@std@@QEAAAEAV012@AEBV012@@Z */
12462 DEFINE_THISCALL_WRAPPER(ios_base_Init_op_assign, 8)
12463 void* __thiscall ios_base_Init_op_assign(void *this, void *rhs)
12465 TRACE("(%p %p)\n", this, rhs);
12466 return this;
12469 /* ?_Init_cnt@_Winit@std@@0HA */
12470 int _Winit__Init_cnt = -1;
12472 /* ??0_Winit@std@@QAE@XZ */
12473 /* ??0_Winit@std@@QEAA@XZ */
12474 DEFINE_THISCALL_WRAPPER(_Winit_ctor, 4)
12475 void* __thiscall _Winit_ctor(void *this)
12477 TRACE("(%p)\n", this);
12479 if(_Winit__Init_cnt < 0)
12480 _Winit__Init_cnt = 1;
12481 else
12482 _Winit__Init_cnt++;
12484 return this;
12487 /* ??1_Winit@std@@QAE@XZ */
12488 /* ??1_Winit@std@@QAE@XZ */
12489 DEFINE_THISCALL_WRAPPER(_Winit_dtor, 4)
12490 void __thiscall _Winit_dtor(void *this)
12492 TRACE("(%p)\n", this);
12494 _Winit__Init_cnt--;
12495 if(!_Winit__Init_cnt) {
12496 basic_ostream_short_flush(&ucout.obj);
12497 basic_ostream_short_flush(&ucerr.obj);
12498 basic_ostream_short_flush(&uclog.obj);
12502 /* ??4_Winit@std@@QAEAAV01@ABV01@@Z */
12503 /* ??4_Winit@std@@QEAAAEAV01@AEBV01@@Z */
12504 DEFINE_THISCALL_WRAPPER(_Winit_op_assign, 8)
12505 void* __thiscall _Winit_op_assign(void *this, void *rhs)
12507 TRACE("(%p %p)\n", this, rhs);
12508 return this;
12511 void init_io(void *base)
12513 #ifdef __x86_64__
12514 init_iosb_rtti(base);
12515 init_ios_base_rtti(base);
12516 init_basic_ios_char_rtti(base);
12517 init_basic_ios_wchar_rtti(base);
12518 init_basic_ios_short_rtti(base);
12519 init_basic_streambuf_char_rtti(base);
12520 init_basic_streambuf_wchar_rtti(base);
12521 init_basic_streambuf_short_rtti(base);
12522 init_basic_filebuf_char_rtti(base);
12523 init_basic_filebuf_wchar_rtti(base);
12524 init_basic_filebuf_short_rtti(base);
12525 init_basic_stringbuf_char_rtti(base);
12526 init_basic_stringbuf_short_rtti(base);
12527 init_basic_ostream_char_rtti(base);
12528 init_basic_ostream_short_rtti(base);
12529 init_basic_istream_char_rtti(base);
12530 init_basic_istream_short_rtti(base);
12531 init_basic_iostream_char_rtti(base);
12532 init_basic_iostream_short_rtti(base);
12533 init_basic_ofstream_char_rtti(base);
12534 init_basic_ofstream_short_rtti(base);
12535 init_basic_ifstream_char_rtti(base);
12536 init_basic_ifstream_short_rtti(base);
12537 init_basic_fstream_char_rtti(base);
12538 init_basic_fstream_short_rtti(base);
12539 init_basic_ostringstream_char_rtti(base);
12540 init_basic_ostringstream_short_rtti(base);
12541 init_basic_istringstream_char_rtti(base);
12542 init_basic_istringstream_short_rtti(base);
12543 init_basic_stringstream_char_rtti(base);
12544 init_basic_stringstream_short_rtti(base);
12545 init_strstreambuf_rtti(base);
12546 init_strstream_rtti(base);
12547 init_ostrstream_rtti(base);
12548 #endif
12550 basic_filebuf_char_ctor_file(&filebuf_char_stdin, stdin);
12551 basic_istream_char_ctor(&cin.obj, &filebuf_char_stdin.base, FALSE/*FIXME*/, TRUE);
12553 basic_filebuf_short_ctor_file(&filebuf_short_stdin, stdin);
12554 basic_istream_short_ctor(&ucin.obj, &filebuf_short_stdin.base, FALSE/*FIXME*/, TRUE);
12556 basic_filebuf_char_ctor_file(&filebuf_char_stdout, stdout);
12557 basic_ostream_char_ctor(&cout.obj, &filebuf_char_stdout.base, FALSE/*FIXME*/, TRUE, TRUE);
12559 basic_filebuf_short_ctor_file(&filebuf_short_stdout, stdout);
12560 basic_ostream_short_ctor(&ucout.obj, &filebuf_short_stdout.base, FALSE/*FIXME*/, TRUE, TRUE);
12562 basic_filebuf_char_ctor_file(&filebuf_char_stderr, stderr);
12563 basic_ostream_char_ctor(&cerr.obj, &filebuf_char_stderr.base, FALSE/*FIXME*/, TRUE, TRUE);
12565 basic_filebuf_short_ctor_file(&filebuf_short_stderr, stderr);
12566 basic_ostream_short_ctor(&ucerr.obj, &filebuf_short_stderr.base, FALSE/*FIXME*/, TRUE, TRUE);
12568 basic_filebuf_char_ctor_file(&filebuf_char_log, stderr);
12569 basic_ostream_char_ctor(&MSVCP_clog.obj, &filebuf_char_log.base, FALSE/*FIXME*/, TRUE, TRUE);
12571 basic_filebuf_short_ctor_file(&filebuf_short_log, stderr);
12572 basic_ostream_short_ctor(&uclog.obj, &filebuf_short_log.base, FALSE/*FIXME*/, TRUE, TRUE);
12575 void free_io(void)
12577 basic_istream_char_vbase_dtor(&cin.obj);
12578 basic_filebuf_char_dtor(&filebuf_char_stdin);
12580 basic_istream_short_vbase_dtor(&ucin.obj);
12581 basic_filebuf_wchar_dtor(&filebuf_short_stdin);
12583 basic_ostream_char_vbase_dtor(&cout.obj);
12584 basic_filebuf_char_dtor(&filebuf_char_stdout);
12586 basic_ostream_short_vbase_dtor(&ucout.obj);
12587 basic_filebuf_wchar_dtor(&filebuf_short_stdout);
12589 basic_ostream_char_vbase_dtor(&cerr.obj);
12590 basic_filebuf_char_dtor(&filebuf_char_stderr);
12592 basic_ostream_short_vbase_dtor(&ucerr.obj);
12593 basic_filebuf_wchar_dtor(&filebuf_short_stderr);
12595 basic_ostream_char_vbase_dtor(&MSVCP_clog.obj);
12596 basic_filebuf_char_dtor(&filebuf_char_log);
12598 basic_ostream_short_vbase_dtor(&uclog.obj);
12599 basic_filebuf_wchar_dtor(&filebuf_short_log);