winex11: Don't use the vulkan driver interface for xrandr.
[wine.git] / dlls / msvcp60 / ios.c
blobe54161a1d3c536f79d85c04858b0be00d94dba34
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 "windows.h"
30 #include "wine/debug.h"
31 WINE_DEFAULT_DEBUG_CHANNEL(msvcp);
33 /* ?_Index@ios_base@std@@0HA */
34 int ios_base_Index = 0;
35 /* ?_Sync@ios_base@std@@0_NA */
36 bool ios_base_Sync = FALSE;
38 typedef struct {
39 streamoff off;
40 __int64 DECLSPEC_ALIGN(8) pos;
41 int state;
42 } fpos_int;
44 static inline const char* debugstr_fpos_int(fpos_int *fpos)
46 return wine_dbg_sprintf("fpos(%Id %I64d %d)", fpos->off, fpos->pos, fpos->state);
49 typedef struct {
50 void (__cdecl *pfunc)(ios_base*, streamsize);
51 streamsize arg;
52 } manip_streamsize;
54 typedef struct {
55 void (__cdecl *pfunc)(ios_base*, int);
56 int arg;
57 } manip_int;
59 typedef enum {
60 INITFL_new = 0,
61 INITFL_open = 1,
62 INITFL_close = 2
63 } basic_filebuf__Initfl;
65 typedef struct {
66 basic_streambuf_char base;
67 codecvt_char *cvt;
68 int state0;
69 int state;
70 basic_string_char *str;
71 bool close;
72 locale loc;
73 FILE *file;
74 } basic_filebuf_char;
76 typedef struct {
77 basic_streambuf_wchar base;
78 codecvt_wchar *cvt;
79 int state0;
80 int state;
81 basic_string_char *str;
82 bool close;
83 locale loc;
84 FILE *file;
85 } basic_filebuf_wchar;
87 typedef enum {
88 STRINGBUF_allocated = 1,
89 STRINGBUF_no_write = 2,
90 STRINGBUF_no_read = 4,
91 STRINGBUF_append = 8,
92 STRINGBUF_at_end = 16
93 } basic_stringbuf_state;
95 typedef struct {
96 basic_streambuf_char base;
97 char *pendsave;
98 char *seekhigh;
99 int alsize;
100 int state;
101 char allocator; /* empty struct */
102 } basic_stringbuf_char;
104 typedef struct {
105 basic_streambuf_wchar base;
106 wchar_t *pendsave;
107 wchar_t *seekhigh;
108 int alsize;
109 int state;
110 char allocator; /* empty struct */
111 } basic_stringbuf_wchar;
113 typedef struct {
114 ios_base base;
115 basic_streambuf_char *strbuf;
116 struct _basic_ostream_char *stream;
117 char fillch;
118 } basic_ios_char;
120 typedef struct {
121 ios_base base;
122 basic_streambuf_wchar *strbuf;
123 struct _basic_ostream_wchar *stream;
124 wchar_t fillch;
125 } basic_ios_wchar;
127 typedef struct _basic_ostream_char {
128 const int *vbtable;
129 /* virtual inheritance
130 * basic_ios_char basic_ios;
132 } basic_ostream_char;
134 typedef struct _basic_ostream_wchar {
135 const int *vbtable;
136 /* virtual inheritance
137 * basic_ios_wchar basic_ios;
139 } basic_ostream_wchar;
141 typedef struct {
142 const int *vbtable;
143 streamsize count;
144 /* virtual inheritance
145 * basic_ios_char basic_ios;
147 } basic_istream_char;
149 typedef struct {
150 const int *vbtable;
151 streamsize count;
152 /* virtual inheritance
153 * basic_ios_wchar basic_ios;
155 } basic_istream_wchar;
157 typedef struct {
158 basic_istream_char base1;
159 basic_ostream_char base2;
160 /* virtual inheritance
161 * basic_ios_char basic_ios;
163 } basic_iostream_char;
165 typedef struct {
166 basic_istream_wchar base1;
167 basic_ostream_wchar base2;
168 /* virtual inheritance
169 * basic_ios_wchar basic_ios;
171 } basic_iostream_wchar;
173 typedef struct {
174 basic_ostream_char base;
175 basic_filebuf_char filebuf;
176 /* virtual inheritance
177 * basic_ios_char basic_ios;
179 } basic_ofstream_char;
181 typedef struct {
182 basic_ostream_wchar base;
183 basic_filebuf_wchar filebuf;
184 /* virtual inheritance
185 * basic_ios_wchar basic_ios;
187 } basic_ofstream_wchar;
189 typedef struct {
190 basic_istream_char base;
191 basic_filebuf_char filebuf;
192 /* virtual inheritance
193 * basic_ios_char basic_ios;
195 } basic_ifstream_char;
197 typedef struct {
198 basic_istream_wchar base;
199 basic_filebuf_wchar filebuf;
200 /* virtual inheritance
201 * basic_ios_wchar basic_ios;
203 } basic_ifstream_wchar;
205 typedef struct {
206 basic_iostream_char base;
207 basic_filebuf_char filebuf;
208 /* virtual inheritance
209 * basic_ios_char basic_ios;
211 } basic_fstream_char;
213 typedef struct {
214 basic_iostream_wchar base;
215 basic_filebuf_wchar filebuf;
216 /* virtual inheritance
217 * basic_ios_char basic_ios;
219 } basic_fstream_wchar;
221 typedef struct {
222 basic_ostream_char base;
223 basic_stringbuf_char strbuf;
224 /* virtual inheritance
225 * basic_ios_char basic_ios;
227 } basic_ostringstream_char;
229 typedef struct {
230 basic_ostream_wchar base;
231 basic_stringbuf_wchar strbuf;
232 /* virtual inheritance
233 * basic_ios_wchar basic_ios;
235 } basic_ostringstream_wchar;
237 typedef struct {
238 basic_istream_char base;
239 basic_stringbuf_char strbuf;
240 /* virtual inheritance
241 * basic_ios_char basic_ios;
243 } basic_istringstream_char;
245 typedef struct {
246 basic_istream_wchar base;
247 basic_stringbuf_wchar strbuf;
248 /* virtual inheritance
249 * basic_ios_wchar basic_ios;
251 } basic_istringstream_wchar;
253 typedef struct {
254 basic_iostream_char base;
255 basic_stringbuf_char strbuf;
256 /* virtual inheritance
257 * basic_ios_char basic_ios;
259 } basic_stringstream_char;
261 typedef struct {
262 basic_iostream_wchar base;
263 basic_stringbuf_wchar strbuf;
264 /* virtual inheritance
265 * basic_ios_wchar basic_ios;
267 } basic_stringstream_wchar;
269 typedef enum {
270 STRSTATE_Allocated = 1,
271 STRSTATE_Constant = 2,
272 STRSTATE_Dynamic = 4,
273 STRSTATE_Frozen = 8
274 } strstreambuf__Strstate;
276 typedef struct {
277 basic_streambuf_char base;
278 char *endsave;
279 char *seekhigh;
280 streamsize minsize;
281 int strmode;
282 void* (__cdecl *palloc)(size_t);
283 void (__cdecl *pfree)(void*);
284 } strstreambuf;
286 typedef struct {
287 basic_ostream_char base;
288 strstreambuf buf;
289 /* virtual inheritance
290 * basic_ios_char basic_ios;
292 } ostrstream;
294 typedef struct {
295 basic_istream_char base;
296 strstreambuf buf;
297 /* virtual inheritance
298 * basic_ios_char basic_ios;
300 } istrstream;
302 typedef struct {
303 basic_iostream_char base;
304 strstreambuf buf;
305 /* virtual inheritance
306 * basic_ios_char basic_ios;
308 } strstream;
310 #define VBTABLE_ALIGN 4
312 extern const vtable_ptr iosb_vtable;
314 /* ??_7ios_base@std@@6B@ */
315 extern const vtable_ptr ios_base_vtable;
317 /* ??_7?$basic_ios@DU?$char_traits@D@std@@@std@@6B@ */
318 extern const vtable_ptr basic_ios_char_vtable;
320 /* ??_7?$basic_ios@GU?$char_traits@G@std@@@std@@6B@ */
321 extern const vtable_ptr basic_ios_short_vtable;
323 /* ??_7?$basic_streambuf@DU?$char_traits@D@std@@@std@@6B@ */
324 extern const vtable_ptr basic_streambuf_char_vtable;
326 /* ??_7?$basic_streambuf@GU?$char_traits@G@std@@@std@@6B@ */
327 extern const vtable_ptr basic_streambuf_short_vtable;
329 /* ??_7?$basic_filebuf@DU?$char_traits@D@std@@@std@@6B@ */
330 extern const vtable_ptr basic_filebuf_char_vtable;
332 /* ??_7?$basic_filebuf@GU?$char_traits@G@std@@@std@@6B@ */
333 extern const vtable_ptr basic_filebuf_short_vtable;
335 /* ??_7?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
336 extern const vtable_ptr basic_stringbuf_char_vtable;
338 /* ??_7?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
339 extern const vtable_ptr basic_stringbuf_short_vtable;
341 /* ??_8?$basic_ostream@DU?$char_traits@D@std@@@std@@7B@ */
342 const int basic_ostream_char_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ostream_char), VBTABLE_ALIGN)};
343 /* ??_7?$basic_ostream@DU?$char_traits@D@std@@@std@@6B@ */
344 extern const vtable_ptr basic_ostream_char_vtable;
346 /* ??_8?$basic_ostream@GU?$char_traits@G@std@@@std@@7B@ */
347 const int basic_ostream_short_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ostream_wchar), VBTABLE_ALIGN)};
348 /* ??_7?$basic_ostream@GU?$char_traits@G@std@@@std@@6B@ */
349 extern const vtable_ptr basic_ostream_short_vtable;
351 /* ??_8?$basic_istream@DU?$char_traits@D@std@@@std@@7B@ */
352 const int basic_istream_char_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_istream_char), VBTABLE_ALIGN)};
353 /* ??_7?$basic_istream@DU?$char_traits@D@std@@@std@@6B@ */
354 extern const vtable_ptr basic_istream_char_vtable;
356 /* ??_8?$basic_istream@GU?$char_traits@G@std@@@std@@7B@ */
357 const int basic_istream_short_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_istream_wchar), VBTABLE_ALIGN)};
358 /* ??_7?$basic_istream@GU?$char_traits@G@std@@@std@@6B@ */
359 extern const vtable_ptr basic_istream_short_vtable;
361 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
362 const int basic_iostream_char_vbtable1[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_char), VBTABLE_ALIGN)};
363 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
364 const int basic_iostream_char_vbtable2[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_char), VBTABLE_ALIGN)-FIELD_OFFSET(basic_iostream_char, base2)};
365 /* ??_7?$basic_iostream@DU?$char_traits@D@std@@@std@@6B@ */
366 extern const vtable_ptr basic_iostream_char_vtable;
368 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
369 const int basic_iostream_short_vbtable1[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_wchar), VBTABLE_ALIGN)};
370 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
371 const int basic_iostream_short_vbtable2[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_wchar), VBTABLE_ALIGN)-FIELD_OFFSET(basic_iostream_wchar, base2)};
372 /* ??_7?$basic_iostream@GU?$char_traits@G@std@@@std@@6B@ */
373 extern const vtable_ptr basic_iostream_short_vtable;
375 /* ??_8?$basic_ofstream@DU?$char_traits@D@std@@@std@@7B@ */
376 const int basic_ofstream_char_vbtable[] = {0, sizeof(basic_ofstream_char)};
377 /* ??_7?$basic_ofstream@DU?$char_traits@D@std@@@std@@6B@ */
378 extern const vtable_ptr basic_ofstream_char_vtable;
380 /* ??_8?$basic_ofstream@GU?$char_traits@G@std@@@std@@7B@ */
381 const int basic_ofstream_short_vbtable[] = {0, sizeof(basic_ofstream_wchar)};
382 /* ??_7?$basic_ofstream@GU?$char_traits@G@std@@@std@@6B@ */
383 extern const vtable_ptr basic_ofstream_short_vtable;
385 /* ??_8?$basic_ifstream@DU?$char_traits@D@std@@@std@@7B@ */
386 const int basic_ifstream_char_vbtable[] = {0, sizeof(basic_ifstream_char)};
387 /* ??_7?$basic_ifstream@DU?$char_traits@D@std@@@std@@6B@ */
388 extern const vtable_ptr basic_ifstream_char_vtable;
390 /* ??_8?$basic_ifstream@GU?$char_traits@G@std@@@std@@7B@ */
391 const int basic_ifstream_short_vbtable[] = {0, sizeof(basic_ifstream_wchar)};
392 /* ??_7?$basic_ifstream@GU?$char_traits@G@std@@@std@@6B@ */
393 extern const vtable_ptr basic_ifstream_short_vtable;
395 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
396 const int basic_fstream_char_vbtable1[] = {0, sizeof(basic_fstream_char)};
397 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
398 const int basic_fstream_char_vbtable2[] = {0, sizeof(basic_fstream_char)-FIELD_OFFSET(basic_fstream_char, base.base2)};
399 /* ??_7?$basic_fstream@DU?$char_traits@D@std@@@std@@6B@ */
400 extern const vtable_ptr basic_fstream_char_vtable;
402 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
403 const int basic_fstream_short_vbtable1[] = {0, sizeof(basic_fstream_wchar)};
404 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
405 const int basic_fstream_short_vbtable2[] = {0, sizeof(basic_fstream_wchar)-FIELD_OFFSET(basic_fstream_wchar, base.base2)};
406 /* ??_7?$basic_fstream@GU?$char_traits@G@std@@@std@@6B@ */
407 extern const vtable_ptr basic_fstream_short_vtable;
409 /* ??_8?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
410 const int basic_ostringstream_char_vbtable[] = {0, sizeof(basic_ostringstream_char)};
411 /* ??_7?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
412 extern const vtable_ptr basic_ostringstream_char_vtable;
414 /* ??_8?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
415 const int basic_ostringstream_short_vbtable[] = {0, sizeof(basic_ostringstream_wchar)};
416 /* ??_7?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
417 extern const vtable_ptr basic_ostringstream_short_vtable;
419 /* ??_8?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
420 const int basic_istringstream_char_vbtable[] = {0, sizeof(basic_istringstream_char)};
421 /* ??_7?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
422 extern const vtable_ptr basic_istringstream_char_vtable;
424 /* ??_8?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
425 const int basic_istringstream_short_vbtable[] = {0, sizeof(basic_istringstream_wchar)};
426 /* ??_7?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
427 extern const vtable_ptr basic_istringstream_short_vtable;
429 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
430 const int basic_stringstream_char_vbtable1[] = {0, sizeof(basic_stringstream_char)};
431 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
432 const int basic_stringstream_char_vbtable2[] = {0, sizeof(basic_stringstream_char)-FIELD_OFFSET(basic_stringstream_char, base.base2)};
433 /* ??_7?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
434 extern const vtable_ptr basic_stringstream_char_vtable;
436 /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
437 const int basic_stringstream_short_vbtable1[] = {0, sizeof(basic_stringstream_wchar)};
438 /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
439 const int basic_stringstream_short_vbtable2[] = {0, sizeof(basic_stringstream_wchar)-FIELD_OFFSET(basic_stringstream_wchar, base.base2)};
440 /* ??_7?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
441 extern const vtable_ptr basic_stringstream_short_vtable;
443 /* ??_7strstreambuf@std@@6B */
444 extern const vtable_ptr strstreambuf_vtable;
446 static const int ostrstream_vbtable[] = {0, sizeof(ostrstream)};
447 extern const vtable_ptr ostrstream_vtable;
449 static const int istrstream_vbtable[] = {0, sizeof(istrstream)};
451 static const int strstream_vbtable1[] = {0, sizeof(strstream)};
452 static const int strstream_vbtable2[] = {0, sizeof(strstream)-FIELD_OFFSET(strstream, base.base2)};
453 extern const vtable_ptr strstream_vtable;
455 DEFINE_RTTI_DATA0(iosb, 0, ".?AV?$_Iosb@H@std@@")
456 DEFINE_RTTI_DATA1(ios_base, 0, &iosb_rtti_base_descriptor, ".?AV?$_Iosb@H@std@@")
457 DEFINE_RTTI_DATA2(basic_ios_char, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
458 ".?AV?$basic_ios@DU?$char_traits@D@std@@@std@@")
459 DEFINE_RTTI_DATA2(basic_ios_short, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
460 ".?AV?$basic_ios@GU?$char_traits@G@std@@@std@@")
461 DEFINE_RTTI_DATA0(basic_streambuf_char, 0,
462 ".?AV?$basic_streambuf@DU?$char_traits@D@std@@@std@@")
463 DEFINE_RTTI_DATA0(basic_streambuf_short, 0,
464 ".?AV?$basic_streambuf@GU?$char_traits@G@std@@@std@@")
465 DEFINE_RTTI_DATA1(basic_filebuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
466 ".?AV?$basic_filebuf@DU?$char_traits@D@std@@@std@@")
467 DEFINE_RTTI_DATA1(basic_filebuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
468 ".?AV?$basic_filebuf@GU?$char_traits@G@std@@@std@@")
469 DEFINE_RTTI_DATA1(basic_stringbuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
470 ".?AV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
471 DEFINE_RTTI_DATA1(basic_stringbuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
472 ".?AV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
473 DEFINE_RTTI_DATA3(basic_ostream_char, sizeof(basic_ostream_char), &basic_ios_char_rtti_base_descriptor,
474 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
475 ".?AV?$basic_ostream@DU?$char_traits@D@std@@@std@@")
476 DEFINE_RTTI_DATA3(basic_ostream_short, sizeof(basic_ostream_wchar), &basic_ios_short_rtti_base_descriptor,
477 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
478 ".?AV?$basic_ostream@GU?$char_traits@G@std@@@std@@")
479 DEFINE_RTTI_DATA3(basic_istream_char, sizeof(basic_istream_char), &basic_ios_char_rtti_base_descriptor,
480 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
481 ".?AV?$basic_istream@DU?$char_traits@D@std@@@std@@")
482 DEFINE_RTTI_DATA3(basic_istream_short, sizeof(basic_istream_wchar), &basic_ios_short_rtti_base_descriptor,
483 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
484 ".?AV?$basic_istream@GU?$char_traits@G@std@@@std@@")
485 DEFINE_RTTI_DATA8(basic_iostream_char, sizeof(basic_iostream_char),
486 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
487 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
488 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
489 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
490 ".?AV?$basic_iostream@DU?$char_traits@D@std@@@std@@")
491 DEFINE_RTTI_DATA8(basic_iostream_short, sizeof(basic_iostream_wchar),
492 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
493 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
494 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
495 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
496 ".?AV?$basic_iostream@GU?$char_traits@G@std@@@std@@")
497 DEFINE_RTTI_DATA4(basic_ofstream_char, sizeof(basic_ofstream_char),
498 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
499 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
500 ".?AV?$basic_ofstream@DU?$char_traits@D@std@@@std@@")
501 DEFINE_RTTI_DATA4(basic_ofstream_short, sizeof(basic_ofstream_wchar),
502 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
503 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
504 ".?AV?$basic_ofstream@GU?$char_traits@G@std@@@std@@")
505 DEFINE_RTTI_DATA4(basic_ifstream_char, sizeof(basic_ifstream_char),
506 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
507 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
508 ".?AV?$basic_ifstream@DU?$char_traits@D@std@@@std@@")
509 DEFINE_RTTI_DATA4(basic_ifstream_short, sizeof(basic_ifstream_wchar),
510 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
511 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
512 ".?AV?$basic_ifstream@GU?$char_traits@G@std@@@std@@")
513 DEFINE_RTTI_DATA8(basic_fstream_char, sizeof(basic_fstream_char),
514 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
515 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
516 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
517 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
518 ".?AV?$basic_fstream@DU?$char_traits@D@std@@@std@@")
519 DEFINE_RTTI_DATA8(basic_fstream_short, sizeof(basic_fstream_wchar),
520 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
521 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
522 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
523 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
524 ".?AV?$basic_fstream@GU?$char_traits@G@std@@@std@@")
525 DEFINE_RTTI_DATA4(basic_ostringstream_char, sizeof(basic_ostringstream_char),
526 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
527 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
528 ".?AV?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
529 DEFINE_RTTI_DATA4(basic_ostringstream_short, sizeof(basic_ostringstream_wchar),
530 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
531 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
532 ".?AV?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
533 DEFINE_RTTI_DATA4(basic_istringstream_char, sizeof(basic_istringstream_char),
534 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
535 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
536 ".?AV?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
537 DEFINE_RTTI_DATA4(basic_istringstream_short, sizeof(basic_istringstream_wchar),
538 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
539 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
540 ".?AV?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
541 DEFINE_RTTI_DATA8(basic_stringstream_char, sizeof(basic_stringstream_char),
542 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
543 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
544 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
545 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
546 ".?AV?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@")
547 DEFINE_RTTI_DATA8(basic_stringstream_short, sizeof(basic_stringstream_wchar),
548 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
549 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
550 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
551 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
552 ".?AV?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@")
553 DEFINE_RTTI_DATA1(strstreambuf, sizeof(strstreambuf),
554 &basic_streambuf_char_rtti_base_descriptor, ".?AVstrstreambuf@std@@")
555 DEFINE_RTTI_DATA4(ostrstream, sizeof(ostrstream),
556 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
557 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
558 "?AVostrstream@std@@")
559 DEFINE_RTTI_DATA8(strstream, sizeof(strstream),
560 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
561 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
562 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
563 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
564 "?AVstrstream@std@@")
566 __ASM_BLOCK_BEGIN(ios_vtables)
567 __ASM_VTABLE(iosb,
568 VTABLE_ADD_FUNC(iosb_vector_dtor));
569 __ASM_VTABLE(ios_base,
570 VTABLE_ADD_FUNC(ios_base_vector_dtor));
571 __ASM_VTABLE(basic_ios_char,
572 VTABLE_ADD_FUNC(basic_ios_char_vector_dtor));
573 __ASM_VTABLE(basic_ios_short,
574 VTABLE_ADD_FUNC(basic_ios_short_vector_dtor));
575 __ASM_VTABLE(basic_streambuf_char,
576 VTABLE_ADD_FUNC(basic_streambuf_char_vector_dtor)
577 VTABLE_ADD_FUNC(basic_streambuf_char_overflow)
578 VTABLE_ADD_FUNC(basic_streambuf_char_pbackfail)
579 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
580 VTABLE_ADD_FUNC(basic_streambuf_char_underflow)
581 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
582 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
583 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
584 VTABLE_ADD_FUNC(basic_streambuf_char_seekoff)
585 VTABLE_ADD_FUNC(basic_streambuf_char_seekpos)
586 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
587 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
588 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
589 __ASM_VTABLE(basic_streambuf_short,
590 VTABLE_ADD_FUNC(basic_streambuf_wchar_vector_dtor)
591 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
592 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
593 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
594 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
595 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
596 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
597 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
598 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
599 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
600 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
601 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
602 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
603 __ASM_VTABLE(basic_filebuf_char,
604 VTABLE_ADD_FUNC(basic_filebuf_char_vector_dtor)
605 VTABLE_ADD_FUNC(basic_filebuf_char_overflow)
606 VTABLE_ADD_FUNC(basic_filebuf_char_pbackfail)
607 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
608 VTABLE_ADD_FUNC(basic_filebuf_char_underflow)
609 VTABLE_ADD_FUNC(basic_filebuf_char_uflow)
610 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
611 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
612 VTABLE_ADD_FUNC(basic_filebuf_char_seekoff)
613 VTABLE_ADD_FUNC(basic_filebuf_char_seekpos)
614 VTABLE_ADD_FUNC(basic_filebuf_char_setbuf)
615 VTABLE_ADD_FUNC(basic_filebuf_char_sync)
616 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
617 __ASM_VTABLE(basic_filebuf_short,
618 VTABLE_ADD_FUNC(basic_filebuf_short_vector_dtor)
619 VTABLE_ADD_FUNC(basic_filebuf_short_overflow)
620 VTABLE_ADD_FUNC(basic_filebuf_short_pbackfail)
621 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
622 VTABLE_ADD_FUNC(basic_filebuf_short_underflow)
623 VTABLE_ADD_FUNC(basic_filebuf_short_uflow)
624 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
625 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
626 VTABLE_ADD_FUNC(basic_filebuf_short_seekoff)
627 VTABLE_ADD_FUNC(basic_filebuf_short_seekpos)
628 VTABLE_ADD_FUNC(basic_filebuf_short_setbuf)
629 VTABLE_ADD_FUNC(basic_filebuf_short_sync)
630 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
631 __ASM_VTABLE(basic_stringbuf_char,
632 VTABLE_ADD_FUNC(basic_stringbuf_char_vector_dtor)
633 VTABLE_ADD_FUNC(basic_stringbuf_char_overflow)
634 VTABLE_ADD_FUNC(basic_stringbuf_char_pbackfail)
635 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
636 VTABLE_ADD_FUNC(basic_stringbuf_char_underflow)
637 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
638 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
639 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
640 VTABLE_ADD_FUNC(basic_stringbuf_char_seekoff)
641 VTABLE_ADD_FUNC(basic_stringbuf_char_seekpos)
642 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
643 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
644 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
645 __ASM_VTABLE(basic_stringbuf_short,
646 VTABLE_ADD_FUNC(basic_stringbuf_short_vector_dtor)
647 VTABLE_ADD_FUNC(basic_stringbuf_short_overflow)
648 VTABLE_ADD_FUNC(basic_stringbuf_short_pbackfail)
649 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
650 VTABLE_ADD_FUNC(basic_stringbuf_short_underflow)
651 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
652 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
653 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
654 VTABLE_ADD_FUNC(basic_stringbuf_short_seekoff)
655 VTABLE_ADD_FUNC(basic_stringbuf_short_seekpos)
656 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
657 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
658 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
659 __ASM_VTABLE(basic_ostream_char,
660 VTABLE_ADD_FUNC(basic_ostream_char_vector_dtor));
661 __ASM_VTABLE(basic_ostream_short,
662 VTABLE_ADD_FUNC(basic_ostream_short_vector_dtor));
663 __ASM_VTABLE(basic_istream_char,
664 VTABLE_ADD_FUNC(basic_istream_char_vector_dtor));
665 __ASM_VTABLE(basic_istream_short,
666 VTABLE_ADD_FUNC(basic_istream_short_vector_dtor));
667 __ASM_VTABLE(basic_iostream_char,
668 VTABLE_ADD_FUNC(basic_iostream_char_vector_dtor));
669 __ASM_VTABLE(basic_iostream_short,
670 VTABLE_ADD_FUNC(basic_iostream_short_vector_dtor));
671 __ASM_VTABLE(basic_ofstream_char,
672 VTABLE_ADD_FUNC(basic_ofstream_char_vector_dtor));
673 __ASM_VTABLE(basic_ofstream_short,
674 VTABLE_ADD_FUNC(basic_ofstream_short_vector_dtor));
675 __ASM_VTABLE(basic_ifstream_char,
676 VTABLE_ADD_FUNC(basic_ifstream_char_vector_dtor));
677 __ASM_VTABLE(basic_ifstream_short,
678 VTABLE_ADD_FUNC(basic_ifstream_short_vector_dtor));
679 __ASM_VTABLE(basic_fstream_char,
680 VTABLE_ADD_FUNC(basic_fstream_char_vector_dtor));
681 __ASM_VTABLE(basic_fstream_short,
682 VTABLE_ADD_FUNC(basic_fstream_short_vector_dtor));
683 __ASM_VTABLE(basic_ostringstream_char,
684 VTABLE_ADD_FUNC(basic_ostringstream_char_vector_dtor));
685 __ASM_VTABLE(basic_ostringstream_short,
686 VTABLE_ADD_FUNC(basic_ostringstream_short_vector_dtor));
687 __ASM_VTABLE(basic_istringstream_char,
688 VTABLE_ADD_FUNC(basic_istringstream_char_vector_dtor));
689 __ASM_VTABLE(basic_istringstream_short,
690 VTABLE_ADD_FUNC(basic_istringstream_short_vector_dtor));
691 __ASM_VTABLE(basic_stringstream_char,
692 VTABLE_ADD_FUNC(basic_stringstream_char_vector_dtor));
693 __ASM_VTABLE(basic_stringstream_short,
694 VTABLE_ADD_FUNC(basic_stringstream_short_vector_dtor));
695 __ASM_VTABLE(strstreambuf,
696 VTABLE_ADD_FUNC(strstreambuf_vector_dtor)
697 VTABLE_ADD_FUNC(strstreambuf_overflow)
698 VTABLE_ADD_FUNC(strstreambuf_pbackfail)
699 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
700 VTABLE_ADD_FUNC(strstreambuf_underflow)
701 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
702 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
703 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
704 VTABLE_ADD_FUNC(strstreambuf_seekoff)
705 VTABLE_ADD_FUNC(strstreambuf_seekpos)
706 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
707 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
708 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
709 __ASM_VTABLE(ostrstream,
710 VTABLE_ADD_FUNC(ostrstream_vector_dtor));
711 __ASM_VTABLE(strstream,
712 VTABLE_ADD_FUNC(strstream_vector_dtor));
713 __ASM_BLOCK_END
715 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
716 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
717 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp_next, 16)
718 void __thiscall basic_streambuf_char_setp_next(basic_streambuf_char *this, char *first, char *next, char *last)
720 TRACE("(%p %p %p %p)\n", this, first, next, last);
722 this->wbuf = first;
723 this->wpos = next;
724 this->wsize = last-next;
727 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD0@Z */
728 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD0@Z */
729 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp, 12)
730 void __thiscall basic_streambuf_char_setp(basic_streambuf_char *this, char *first, char *last)
732 basic_streambuf_char_setp_next(this, first, first, last);
735 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
736 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
737 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setg, 16)
738 void __thiscall basic_streambuf_char_setg(basic_streambuf_char *this, char *first, char *next, char *last)
740 TRACE("(%p %p %p %p)\n", this, first, next, last);
742 this->rbuf = first;
743 this->rpos = next;
744 this->rsize = last-next;
747 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXXZ */
748 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */
749 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init_empty, 4)
750 void __thiscall basic_streambuf_char__Init_empty(basic_streambuf_char *this)
752 TRACE("(%p)\n", this);
754 this->prbuf = &this->rbuf;
755 this->pwbuf = &this->wbuf;
756 this->prpos = &this->rpos;
757 this->pwpos = &this->wpos;
758 this->prsize = &this->rsize;
759 this->pwsize = &this->wsize;
761 basic_streambuf_char_setp(this, NULL, NULL);
762 basic_streambuf_char_setg(this, NULL, NULL, NULL);
765 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@W4_Uninitialized@1@@Z */
766 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
767 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor_uninitialized, 8)
768 basic_streambuf_char* __thiscall basic_streambuf_char_ctor_uninitialized(basic_streambuf_char *this, int uninitialized)
770 TRACE("(%p %d)\n", this, uninitialized);
771 this->vtable = &basic_streambuf_char_vtable;
772 return this;
775 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ */
776 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ */
777 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor, 4)
778 basic_streambuf_char* __thiscall basic_streambuf_char_ctor(basic_streambuf_char *this)
780 TRACE("(%p)\n", this);
782 this->vtable = &basic_streambuf_char_vtable;
783 locale_ctor(IOS_LOCALE(this));
784 basic_streambuf_char__Init_empty(this);
786 return this;
789 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
790 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
791 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_dtor, 4)
792 void __thiscall basic_streambuf_char_dtor(basic_streambuf_char *this)
794 TRACE("(%p)\n", this);
795 locale_dtor(IOS_LOCALE(this));
798 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_vector_dtor, 8)
799 basic_streambuf_char* __thiscall basic_streambuf_char_vector_dtor(basic_streambuf_char *this, unsigned int flags)
801 TRACE("(%p %x)\n", this, flags);
802 if(flags & 2) {
803 /* we have an array, with the number of elements stored before the first object */
804 INT_PTR i, *ptr = (INT_PTR *)this-1;
806 for(i=*ptr-1; i>=0; i--)
807 basic_streambuf_char_dtor(this+i);
808 operator_delete(ptr);
809 } else {
810 basic_streambuf_char_dtor(this);
811 if(flags & 1)
812 operator_delete(this);
815 return this;
818 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
819 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
820 static streamsize basic_streambuf_char__Gnavail(const basic_streambuf_char *this)
822 TRACE("(%p)\n", this);
823 return *this->prpos ? *this->prsize : 0;
826 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
827 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
828 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gndec, 4)
829 char* __thiscall basic_streambuf_char__Gndec(basic_streambuf_char *this)
831 TRACE("(%p)\n", this);
832 (*this->prsize)++;
833 (*this->prpos)--;
834 return *this->prpos;
837 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
838 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
839 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gninc, 4)
840 char* __thiscall basic_streambuf_char__Gninc(basic_streambuf_char *this)
842 TRACE("(%p)\n", this);
843 (*this->prsize)--;
844 return (*this->prpos)++;
847 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
848 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
849 static char* basic_streambuf_char__Gnpreinc(basic_streambuf_char *this)
851 TRACE("(%p)\n", this);
852 (*this->prsize)--;
853 (*this->prpos)++;
854 return *this->prpos;
857 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAPAD0PAH001@Z */
858 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAPEAD0PEAH001@Z */
859 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init, 28)
860 void __thiscall basic_streambuf_char__Init(basic_streambuf_char *this, char **gf, char **gn, int *gc, char **pf, char **pn, int *pc)
862 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
864 this->prbuf = gf;
865 this->pwbuf = pf;
866 this->prpos = gn;
867 this->pwpos = pn;
868 this->prsize = gc;
869 this->pwsize = pc;
872 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
873 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
874 static streamsize basic_streambuf_char__Pnavail(const basic_streambuf_char *this)
876 TRACE("(%p)\n", this);
877 return *this->pwpos ? *this->pwsize : 0;
880 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
881 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
882 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pninc, 4)
883 char* __thiscall basic_streambuf_char__Pninc(basic_streambuf_char *this)
885 TRACE("(%p)\n", this);
886 (*this->pwsize)--;
887 return (*this->pwpos)++;
890 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
891 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
892 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_underflow, 4)
893 #define call_basic_streambuf_char_underflow(this) CALL_VTBL_FUNC(this, 16, int, (basic_streambuf_char*), (this))
894 int __thiscall basic_streambuf_char_underflow(basic_streambuf_char *this)
896 TRACE("(%p)\n", this);
897 return EOF;
900 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
901 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
902 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_uflow, 4)
903 #define call_basic_streambuf_char_uflow(this) CALL_VTBL_FUNC(this, 20, int, (basic_streambuf_char*), (this))
904 int __thiscall basic_streambuf_char_uflow(basic_streambuf_char *this)
906 int ret;
908 TRACE("(%p)\n", this);
910 if(call_basic_streambuf_char_underflow(this)==EOF)
911 return EOF;
913 ret = (unsigned char)**this->prpos;
914 (*this->prsize)--;
915 (*this->prpos)++;
916 return ret;
919 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
920 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
921 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_eback, 4)
922 char* __thiscall basic_streambuf_char_eback(const basic_streambuf_char *this)
924 TRACE("(%p)\n", this);
925 return *this->prbuf;
928 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
929 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
930 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gptr, 4)
931 char* __thiscall basic_streambuf_char_gptr(const basic_streambuf_char *this)
933 TRACE("(%p)\n", this);
934 return *this->prpos;
937 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
938 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
939 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_egptr, 4)
940 char* __thiscall basic_streambuf_char_egptr(const basic_streambuf_char *this)
942 TRACE("(%p)\n", this);
943 return *this->prpos+*this->prsize;
946 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
947 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
948 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_epptr, 4)
949 char* __thiscall basic_streambuf_char_epptr(const basic_streambuf_char *this)
951 TRACE("(%p)\n", this);
952 return *this->pwpos+*this->pwsize;
955 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
956 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
957 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gbump, 8)
958 void __thiscall basic_streambuf_char_gbump(basic_streambuf_char *this, int off)
960 TRACE("(%p %d)\n", this, off);
961 *this->prpos += off;
962 *this->prsize -= off;
965 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@XZ */
966 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ */
967 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@XZ */
968 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ */
969 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_getloc, 8)
970 locale* __thiscall basic_streambuf_char_getloc(const basic_streambuf_char *this, locale *ret)
972 TRACE("(%p)\n", this);
973 return locale_copy_ctor(ret, IOS_LOCALE(this));
976 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
977 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
978 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_imbue, 8)
979 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 48, void, (basic_streambuf_char*, const locale*), (this, loc))
980 void __thiscall basic_streambuf_char_imbue(basic_streambuf_char *this, const locale *loc)
982 TRACE("(%p %p)\n", this, loc);
985 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
986 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
987 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_overflow, 8)
988 #define call_basic_streambuf_char_overflow(this, ch) CALL_VTBL_FUNC(this, 4, int, (basic_streambuf_char*, int), (this, ch))
989 int __thiscall basic_streambuf_char_overflow(basic_streambuf_char *this, int ch)
991 TRACE("(%p %d)\n", this, ch);
992 return EOF;
995 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
996 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
997 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbackfail, 8)
998 #define call_basic_streambuf_char_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, int, (basic_streambuf_char*, int), (this, ch))
999 int __thiscall basic_streambuf_char_pbackfail(basic_streambuf_char *this, int ch)
1001 TRACE("(%p %d)\n", this, ch);
1002 return EOF;
1005 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1006 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1007 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbase, 4)
1008 char* __thiscall basic_streambuf_char_pbase(const basic_streambuf_char *this)
1010 TRACE("(%p)\n", this);
1011 return *this->pwbuf;
1014 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1015 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1016 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbump, 8)
1017 void __thiscall basic_streambuf_char_pbump(basic_streambuf_char *this, int off)
1019 TRACE("(%p %d)\n", this, off);
1020 *this->pwpos += off;
1021 *this->pwsize -= off;
1024 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1025 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1026 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pptr, 4)
1027 char* __thiscall basic_streambuf_char_pptr(const basic_streambuf_char *this)
1029 TRACE("(%p)\n", this);
1030 return *this->pwpos;
1033 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1034 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1035 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubimbue, 12)
1036 locale* __thiscall basic_streambuf_char_pubimbue(basic_streambuf_char *this, locale *ret, const locale *loc)
1038 TRACE("(%p %p)\n", this, loc);
1039 memcpy(ret, IOS_LOCALE(this), sizeof(locale));
1040 call_basic_streambuf_char_imbue(this, loc);
1041 locale_copy_ctor(IOS_LOCALE(this), loc);
1042 return ret;
1045 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
1046 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
1047 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1048 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1049 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 20)
1050 #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))
1051 fpos_int* __thiscall basic_streambuf_char_seekoff(basic_streambuf_char *this,
1052 fpos_int *ret, streamoff off, int way, int mode)
1054 TRACE("(%p %Id %d %d)\n", this, off, way, mode);
1055 ret->off = -1;
1056 ret->pos = 0;
1057 ret->state = 0;
1058 return ret;
1061 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1062 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1063 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JFF@Z */
1064 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JFF@Z */
1065 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
1066 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
1067 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 20)
1068 fpos_int* __thiscall basic_streambuf_char_pubseekoff(basic_streambuf_char *this,
1069 fpos_int *ret, streamoff off, int way, int mode)
1071 TRACE("(%p %Id %d %d)\n", this, off, way, mode);
1072 return call_basic_streambuf_char_seekoff(this, ret, off, way, mode);
1075 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1076 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1077 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekpos, 36)
1078 #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))
1079 fpos_int* __thiscall basic_streambuf_char_seekpos(basic_streambuf_char *this,
1080 fpos_int *ret, fpos_int pos, int mode)
1082 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1083 ret->off = -1;
1084 ret->pos = 0;
1085 ret->state = 0;
1086 return ret;
1089 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1090 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1091 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos, 36)
1092 fpos_int* __thiscall basic_streambuf_char_pubseekpos(basic_streambuf_char *this,
1093 fpos_int *ret, fpos_int pos, int mode)
1095 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1096 return call_basic_streambuf_char_seekpos(this, ret, pos, mode);
1099 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PADH@Z */
1100 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z */
1101 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 12)
1102 #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))
1103 basic_streambuf_char* __thiscall basic_streambuf_char_setbuf(basic_streambuf_char *this, char *buf, streamsize count)
1105 TRACE("(%p %p %Id)\n", this, buf, count);
1106 return this;
1109 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PADH@Z */
1110 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEAD_J@Z */
1111 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 12)
1112 basic_streambuf_char* __thiscall basic_streambuf_char_pubsetbuf(basic_streambuf_char *this, char *buf, streamsize count)
1114 TRACE("(%p %p %Id)\n", this, buf, count);
1115 return call_basic_streambuf_char_setbuf(this, buf, count);
1118 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1119 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1120 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sync, 4)
1121 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 44, int, (basic_streambuf_char*), (this))
1122 int __thiscall basic_streambuf_char_sync(basic_streambuf_char *this)
1124 TRACE("(%p)\n", this);
1125 return 0;
1128 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1129 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1130 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsync, 4)
1131 int __thiscall basic_streambuf_char_pubsync(basic_streambuf_char *this)
1133 TRACE("(%p)\n", this);
1134 return call_basic_streambuf_char_sync(this);
1137 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADH@Z */
1138 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z */
1139 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 12)
1140 #define call_basic_streambuf_char_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, streamsize, (basic_streambuf_char*, char*, streamsize), (this, ptr, count))
1141 streamsize __thiscall basic_streambuf_char_xsgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1143 streamsize copied, chunk;
1144 int c;
1146 TRACE("(%p %p %Id)\n", this, ptr, count);
1148 for(copied=0; copied<count;) {
1149 chunk = basic_streambuf_char__Gnavail(this);
1150 if(chunk > count-copied)
1151 chunk = count-copied;
1153 if(chunk > 0) {
1154 memcpy(ptr+copied, *this->prpos, chunk);
1155 *this->prpos += chunk;
1156 *this->prsize -= chunk;
1157 copied += chunk;
1158 }else if((c = call_basic_streambuf_char_uflow(this)) != EOF) {
1159 ptr[copied] = c;
1160 copied++;
1161 }else {
1162 break;
1166 return copied;
1169 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
1170 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
1171 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 12)
1172 streamsize __thiscall basic_streambuf_char_sgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1174 TRACE("(%p %p %Id)\n", this, ptr, count);
1175 return call_basic_streambuf_char_xsgetn(this, ptr, count);
1178 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1179 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ */
1180 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_showmanyc, 4)
1181 #define call_basic_streambuf_char_showmanyc(this) CALL_VTBL_FUNC(this, 12, streamsize, (basic_streambuf_char*), (this))
1182 streamsize __thiscall basic_streambuf_char_showmanyc(basic_streambuf_char *this)
1184 TRACE("(%p)\n", this);
1185 return 0;
1188 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1189 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JXZ */
1190 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_in_avail, 4)
1191 streamsize __thiscall basic_streambuf_char_in_avail(basic_streambuf_char *this)
1193 streamsize ret;
1195 TRACE("(%p)\n", this);
1197 ret = basic_streambuf_char__Gnavail(this);
1198 return ret ? ret : call_basic_streambuf_char_showmanyc(this);
1201 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1202 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1203 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputbackc, 8)
1204 int __thiscall basic_streambuf_char_sputbackc(basic_streambuf_char *this, char ch)
1206 TRACE("(%p %d)\n", this, ch);
1207 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
1208 (*this->prsize)++;
1209 (*this->prpos)--;
1210 return (unsigned char)ch;
1213 return call_basic_streambuf_char_pbackfail(this, (unsigned char)ch);
1216 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1217 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1218 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputc, 8)
1219 int __thiscall basic_streambuf_char_sputc(basic_streambuf_char *this, char ch)
1221 TRACE("(%p %d)\n", this, ch);
1222 return basic_streambuf_char__Pnavail(this) ?
1223 (unsigned char)(*basic_streambuf_char__Pninc(this) = ch) :
1224 call_basic_streambuf_char_overflow(this, (unsigned char)ch);
1227 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1228 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1229 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sungetc, 4)
1230 int __thiscall basic_streambuf_char_sungetc(basic_streambuf_char *this)
1232 TRACE("(%p)\n", this);
1233 if(*this->prpos && *this->prpos>*this->prbuf) {
1234 (*this->prsize)++;
1235 (*this->prpos)--;
1236 return (unsigned char)**this->prpos;
1239 return call_basic_streambuf_char_pbackfail(this, EOF);
1242 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1243 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1244 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_stossc, 4)
1245 void __thiscall basic_streambuf_char_stossc(basic_streambuf_char *this)
1247 TRACE("(%p)\n", this);
1248 if(basic_streambuf_char__Gnavail(this))
1249 basic_streambuf_char__Gninc(this);
1250 else
1251 call_basic_streambuf_char_uflow(this);
1254 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1255 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1256 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sbumpc, 4)
1257 int __thiscall basic_streambuf_char_sbumpc(basic_streambuf_char *this)
1259 TRACE("(%p)\n", this);
1260 return basic_streambuf_char__Gnavail(this) ?
1261 (int)(unsigned char)*basic_streambuf_char__Gninc(this) : call_basic_streambuf_char_uflow(this);
1264 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1265 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1266 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetc, 4)
1267 int __thiscall basic_streambuf_char_sgetc(basic_streambuf_char *this)
1269 TRACE("(%p)\n", this);
1270 return basic_streambuf_char__Gnavail(this) ?
1271 (int)(unsigned char)*basic_streambuf_char_gptr(this) : call_basic_streambuf_char_underflow(this);
1274 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1275 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1276 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_snextc, 4)
1277 int __thiscall basic_streambuf_char_snextc(basic_streambuf_char *this)
1279 TRACE("(%p)\n", this);
1281 if(basic_streambuf_char__Gnavail(this) > 1)
1282 return (unsigned char)*basic_streambuf_char__Gnpreinc(this);
1283 return basic_streambuf_char_sbumpc(this)==EOF ?
1284 EOF : basic_streambuf_char_sgetc(this);
1287 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPBDH@Z */
1288 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z */
1289 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 12)
1290 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 28, streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1291 streamsize __thiscall basic_streambuf_char_xsputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1293 streamsize copied, chunk;
1295 TRACE("(%p %p %Id)\n", this, ptr, count);
1297 for(copied=0; copied<count;) {
1298 chunk = basic_streambuf_char__Pnavail(this);
1299 if(chunk > count-copied)
1300 chunk = count-copied;
1302 if(chunk > 0) {
1303 memcpy(*this->pwpos, ptr+copied, chunk);
1304 *this->pwpos += chunk;
1305 *this->pwsize -= chunk;
1306 copied += chunk;
1307 }else if(call_basic_streambuf_char_overflow(this, (unsigned char)ptr[copied]) != EOF) {
1308 copied++;
1309 }else {
1310 break;
1314 return copied;
1317 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z */
1318 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z */
1319 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 12)
1320 streamsize __thiscall basic_streambuf_char_sputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1322 TRACE("(%p %p %Id)\n", this, ptr, count);
1323 return call_basic_streambuf_char_xsputn(this, ptr, count);
1326 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
1327 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
1328 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp_next, 16)
1329 void __thiscall basic_streambuf_wchar_setp_next(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
1331 TRACE("(%p %p %p %p)\n", this, first, next, last);
1333 this->wbuf = first;
1334 this->wpos = next;
1335 this->wsize = last-next;
1338 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG0@Z */
1339 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG0@Z */
1340 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp, 12)
1341 void __thiscall basic_streambuf_wchar_setp(basic_streambuf_wchar *this, wchar_t *first, wchar_t *last)
1343 basic_streambuf_wchar_setp_next(this, first, first, last);
1346 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
1347 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
1348 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setg, 16)
1349 void __thiscall basic_streambuf_wchar_setg(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
1351 TRACE("(%p %p %p %p)\n", this, first, next, last);
1353 this->rbuf = first;
1354 this->rpos = next;
1355 this->rsize = last-next;
1358 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXXZ */
1359 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */
1360 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init_empty, 4)
1361 void __thiscall basic_streambuf_wchar__Init_empty(basic_streambuf_wchar *this)
1363 TRACE("(%p)\n", this);
1365 this->prbuf = &this->rbuf;
1366 this->pwbuf = &this->wbuf;
1367 this->prpos = &this->rpos;
1368 this->pwpos = &this->wpos;
1369 this->prsize = &this->rsize;
1370 this->pwsize = &this->wsize;
1372 basic_streambuf_wchar_setp(this, NULL, NULL);
1373 basic_streambuf_wchar_setg(this, NULL, NULL, NULL);
1376 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1377 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1378 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor_uninitialized, 8)
1379 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
1381 TRACE("(%p %d)\n", this, uninitialized);
1382 this->vtable = &basic_streambuf_short_vtable;
1383 return this;
1386 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@XZ */
1387 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@XZ */
1388 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor, 4)
1389 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor(basic_streambuf_wchar *this)
1391 TRACE("(%p)\n", this);
1393 this->vtable = &basic_streambuf_short_vtable;
1394 locale_ctor(IOS_LOCALE(this));
1395 basic_streambuf_wchar__Init_empty(this);
1397 return this;
1400 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
1401 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
1402 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_dtor, 4)
1403 void __thiscall basic_streambuf_wchar_dtor(basic_streambuf_wchar *this)
1405 TRACE("(%p)\n", this);
1406 locale_dtor(IOS_LOCALE(this));
1409 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_vector_dtor, 8)
1410 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_vector_dtor(basic_streambuf_wchar *this, unsigned int flags)
1412 TRACE("(%p %x)\n", this, flags);
1413 if(flags & 2) {
1414 /* we have an array, with the number of elements stored before the first object */
1415 INT_PTR i, *ptr = (INT_PTR *)this-1;
1417 for(i=*ptr-1; i>=0; i--)
1418 basic_streambuf_wchar_dtor(this+i);
1419 operator_delete(ptr);
1420 } else {
1421 basic_streambuf_wchar_dtor(this);
1422 if(flags & 1)
1423 operator_delete(this);
1426 return this;
1429 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
1430 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
1431 static streamsize basic_streambuf_wchar__Gnavail(const basic_streambuf_wchar *this)
1433 TRACE("(%p)\n", this);
1434 return *this->prpos ? *this->prsize : 0;
1437 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1438 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1439 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gndec, 4)
1440 wchar_t* __thiscall basic_streambuf_wchar__Gndec(basic_streambuf_wchar *this)
1442 TRACE("(%p)\n", this);
1443 (*this->prsize)++;
1444 (*this->prpos)--;
1445 return *this->prpos;
1448 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1449 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1450 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gninc, 4)
1451 wchar_t* __thiscall basic_streambuf_wchar__Gninc(basic_streambuf_wchar *this)
1453 TRACE("(%p)\n", this);
1454 (*this->prsize)--;
1455 return (*this->prpos)++;
1458 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1459 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1460 static wchar_t* basic_streambuf_wchar__Gnpreinc(basic_streambuf_wchar *this)
1462 TRACE("(%p)\n", this);
1463 (*this->prsize)--;
1464 (*this->prpos)++;
1465 return *this->prpos;
1468 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAPAG0PAH001@Z */
1469 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAPEAG0PEAH001@Z */
1470 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init, 28)
1471 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)
1473 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
1475 this->prbuf = gf;
1476 this->pwbuf = pf;
1477 this->prpos = gn;
1478 this->pwpos = pn;
1479 this->prsize = gc;
1480 this->pwsize = pc;
1483 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
1484 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
1485 static streamsize basic_streambuf_wchar__Pnavail(const basic_streambuf_wchar *this)
1487 TRACE("(%p)\n", this);
1488 return *this->pwpos ? *this->pwsize : 0;
1491 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1492 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1493 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pninc, 4)
1494 wchar_t* __thiscall basic_streambuf_wchar__Pninc(basic_streambuf_wchar *this)
1496 TRACE("(%p)\n", this);
1497 (*this->pwsize)--;
1498 return (*this->pwpos)++;
1501 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
1502 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
1503 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_underflow, 4)
1504 #define call_basic_streambuf_wchar_underflow(this) CALL_VTBL_FUNC(this, 16, unsigned short, (basic_streambuf_wchar*), (this))
1505 unsigned short __thiscall basic_streambuf_wchar_underflow(basic_streambuf_wchar *this)
1507 TRACE("(%p)\n", this);
1508 return WEOF;
1511 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
1512 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
1513 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_uflow, 4)
1514 #define call_basic_streambuf_wchar_uflow(this) CALL_VTBL_FUNC(this, 20, unsigned short, (basic_streambuf_wchar*), (this))
1515 unsigned short __thiscall basic_streambuf_wchar_uflow(basic_streambuf_wchar *this)
1517 int ret;
1519 TRACE("(%p)\n", this);
1521 if(call_basic_streambuf_wchar_underflow(this)==WEOF)
1522 return WEOF;
1524 ret = **this->prpos;
1525 (*this->prsize)--;
1526 (*this->prpos)++;
1527 return ret;
1530 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1531 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1532 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_eback, 4)
1533 wchar_t* __thiscall basic_streambuf_wchar_eback(const basic_streambuf_wchar *this)
1535 TRACE("(%p)\n", this);
1536 return *this->prbuf;
1539 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1540 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1541 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gptr, 4)
1542 wchar_t* __thiscall basic_streambuf_wchar_gptr(const basic_streambuf_wchar *this)
1544 TRACE("(%p)\n", this);
1545 return *this->prpos;
1548 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1549 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1550 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_egptr, 4)
1551 wchar_t* __thiscall basic_streambuf_wchar_egptr(const basic_streambuf_wchar *this)
1553 TRACE("(%p)\n", this);
1554 return *this->prpos+*this->prsize;
1557 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1558 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1559 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_epptr, 4)
1560 wchar_t* __thiscall basic_streambuf_wchar_epptr(const basic_streambuf_wchar *this)
1562 TRACE("(%p)\n", this);
1563 return *this->pwpos+*this->pwsize;
1566 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
1567 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
1568 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gbump, 8)
1569 void __thiscall basic_streambuf_wchar_gbump(basic_streambuf_wchar *this, int off)
1571 TRACE("(%p %d)\n", this, off);
1572 *this->prpos += off;
1573 *this->prsize -= off;
1576 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
1577 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
1578 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_imbue, 8)
1579 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 48, void, (basic_streambuf_wchar*, const locale*), (this, loc))
1580 void __thiscall basic_streambuf_wchar_imbue(basic_streambuf_wchar *this, const locale *loc)
1582 TRACE("(%p %p)\n", this, loc);
1585 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
1586 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
1587 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_overflow, 8)
1588 #define call_basic_streambuf_wchar_overflow(this, ch) CALL_VTBL_FUNC(this, 4, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
1589 unsigned short __thiscall basic_streambuf_wchar_overflow(basic_streambuf_wchar *this, unsigned short ch)
1591 TRACE("(%p %d)\n", this, ch);
1592 return WEOF;
1595 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
1596 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
1597 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbackfail, 8)
1598 #define call_basic_streambuf_wchar_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
1599 unsigned short __thiscall basic_streambuf_wchar_pbackfail(basic_streambuf_wchar *this, unsigned short ch)
1601 TRACE("(%p %d)\n", this, ch);
1602 return WEOF;
1605 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1606 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1607 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbase, 4)
1608 wchar_t* __thiscall basic_streambuf_wchar_pbase(const basic_streambuf_wchar *this)
1610 TRACE("(%p)\n", this);
1611 return *this->pwbuf;
1614 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
1615 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
1616 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbump, 8)
1617 void __thiscall basic_streambuf_wchar_pbump(basic_streambuf_wchar *this, int off)
1619 TRACE("(%p %d)\n", this, off);
1620 *this->pwpos += off;
1621 *this->pwsize -= off;
1624 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1625 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1626 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pptr, 4)
1627 wchar_t* __thiscall basic_streambuf_wchar_pptr(const basic_streambuf_wchar *this)
1629 TRACE("(%p)\n", this);
1630 return *this->pwpos;
1633 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1634 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1635 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubimbue, 12)
1636 locale* __thiscall basic_streambuf_wchar_pubimbue(basic_streambuf_wchar *this, locale *ret, const locale *loc)
1638 TRACE("(%p %p)\n", this, loc);
1639 memcpy(ret, IOS_LOCALE(this), sizeof(locale));
1640 call_basic_streambuf_wchar_imbue(this, loc);
1641 locale_copy_ctor(IOS_LOCALE(this), loc);
1642 return ret;
1645 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
1646 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
1647 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1648 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1649 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekoff, 20)
1650 #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))
1651 fpos_int* __thiscall basic_streambuf_wchar_seekoff(basic_streambuf_wchar *this,
1652 fpos_int *ret, streamoff off, int way, int mode)
1654 TRACE("(%p %Id %d %d)\n", this, off, way, mode);
1655 ret->off = -1;
1656 ret->pos = 0;
1657 ret->state = 0;
1658 return ret;
1661 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1662 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1663 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JFF@Z */
1664 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JFF@Z */
1665 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
1666 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JW4seekdir@ioos_base@2@H@Z */
1667 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff, 20)
1668 fpos_int* __thiscall basic_streambuf_wchar_pubseekoff(basic_streambuf_wchar *this,
1669 fpos_int *ret, streamoff off, int way, int mode)
1671 TRACE("(%p %Id %d %d)\n", this, off, way, mode);
1672 return call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode);
1675 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1676 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1677 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekpos, 36)
1678 #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))
1679 fpos_int* __thiscall basic_streambuf_wchar_seekpos(basic_streambuf_wchar *this,
1680 fpos_int *ret, fpos_int pos, int mode)
1682 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1683 ret->off = -1;
1684 ret->pos = 0;
1685 ret->state = 0;
1686 return ret;
1689 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1690 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1691 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos, 36)
1692 fpos_int* __thiscall basic_streambuf_wchar_pubseekpos(basic_streambuf_wchar *this,
1693 fpos_int *ret, fpos_int pos, int mode)
1695 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1696 return call_basic_streambuf_wchar_seekpos(this, ret, pos, mode);
1699 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEPAV12@PAGH@Z */
1700 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAPEAV12@PEAG_J@Z */
1701 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setbuf, 12)
1702 #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))
1703 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_setbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
1705 TRACE("(%p %p %Id)\n", this, buf, count);
1706 return this;
1709 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PAGH@Z */
1710 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEAG_J@Z */
1711 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsetbuf, 12)
1712 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_pubsetbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
1714 TRACE("(%p %p %Id)\n", this, buf, count);
1715 return call_basic_streambuf_wchar_setbuf(this, buf, count);
1718 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
1719 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
1720 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sync, 4)
1721 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 44, int, (basic_streambuf_wchar*), (this))
1722 int __thiscall basic_streambuf_wchar_sync(basic_streambuf_wchar *this)
1724 TRACE("(%p)\n", this);
1725 return 0;
1728 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
1729 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHXZ */
1730 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsync, 4)
1731 int __thiscall basic_streambuf_wchar_pubsync(basic_streambuf_wchar *this)
1733 TRACE("(%p)\n", this);
1734 return call_basic_streambuf_wchar_sync(this);
1737 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGH@Z */
1738 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_J@Z */
1739 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsgetn, 12)
1740 #define call_basic_streambuf_wchar_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, streamsize, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, ptr, count))
1741 streamsize __thiscall basic_streambuf_wchar_xsgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
1743 streamsize copied, chunk;
1744 unsigned short c;
1746 TRACE("(%p %p %Id)\n", this, ptr, count);
1748 for(copied=0; copied<count;) {
1749 chunk = basic_streambuf_wchar__Gnavail(this);
1750 if(chunk > count-copied)
1751 chunk = count-copied;
1753 if(chunk > 0) {
1754 memcpy(ptr+copied, *this->prpos, chunk*sizeof(wchar_t));
1755 *this->prpos += chunk;
1756 *this->prsize -= chunk;
1757 copied += chunk;
1758 }else if((c = call_basic_streambuf_wchar_uflow(this)) != WEOF) {
1759 ptr[copied] = c;
1760 copied++;
1761 }else {
1762 break;
1766 return copied;
1769 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
1770 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
1771 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetn, 12)
1772 streamsize __thiscall basic_streambuf_wchar_sgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
1774 TRACE("(%p %p %Id)\n", this, ptr, count);
1775 return call_basic_streambuf_wchar_xsgetn(this, ptr, count);
1778 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
1779 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JXZ */
1780 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_showmanyc, 4)
1781 #define call_basic_streambuf_wchar_showmanyc(this) CALL_VTBL_FUNC(this, 12, streamsize, (basic_streambuf_wchar*), (this))
1782 streamsize __thiscall basic_streambuf_wchar_showmanyc(basic_streambuf_wchar *this)
1784 TRACE("(%p)\n", this);
1785 return 0;
1788 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
1789 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JXZ */
1790 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_in_avail, 4)
1791 streamsize __thiscall basic_streambuf_wchar_in_avail(basic_streambuf_wchar *this)
1793 streamsize ret;
1795 TRACE("(%p)\n", this);
1797 ret = basic_streambuf_wchar__Gnavail(this);
1798 return ret ? ret : call_basic_streambuf_wchar_showmanyc(this);
1801 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
1802 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
1803 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputbackc, 8)
1804 unsigned short __thiscall basic_streambuf_wchar_sputbackc(basic_streambuf_wchar *this, wchar_t ch)
1806 TRACE("(%p %d)\n", this, ch);
1807 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
1808 (*this->prsize)++;
1809 (*this->prpos)--;
1810 return ch;
1813 return call_basic_streambuf_wchar_pbackfail(this, ch);
1816 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
1817 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHG@Z */
1818 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputc, 8)
1819 unsigned short __thiscall basic_streambuf_wchar_sputc(basic_streambuf_wchar *this, wchar_t ch)
1821 TRACE("(%p %d)\n", this, ch);
1822 return basic_streambuf_wchar__Pnavail(this) ?
1823 (*basic_streambuf_wchar__Pninc(this) = ch) :
1824 call_basic_streambuf_wchar_overflow(this, ch);
1827 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
1828 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
1829 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sungetc, 4)
1830 unsigned short __thiscall basic_streambuf_wchar_sungetc(basic_streambuf_wchar *this)
1832 TRACE("(%p)\n", this);
1833 if(*this->prpos && *this->prpos>*this->prbuf) {
1834 (*this->prsize)++;
1835 (*this->prpos)--;
1836 return **this->prpos;
1839 return call_basic_streambuf_wchar_pbackfail(this, WEOF);
1842 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
1843 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
1844 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_stossc, 4)
1845 void __thiscall basic_streambuf_wchar_stossc(basic_streambuf_wchar *this)
1847 TRACE("(%p)\n", this);
1848 if(basic_streambuf_wchar__Gnavail(this))
1849 basic_streambuf_wchar__Gninc(this);
1850 else
1851 call_basic_streambuf_wchar_uflow(this);
1854 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
1855 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
1856 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sbumpc, 4)
1857 unsigned short __thiscall basic_streambuf_wchar_sbumpc(basic_streambuf_wchar *this)
1859 TRACE("(%p)\n", this);
1860 return basic_streambuf_wchar__Gnavail(this) ?
1861 *basic_streambuf_wchar__Gninc(this) : call_basic_streambuf_wchar_uflow(this);
1864 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
1865 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
1866 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetc, 4)
1867 unsigned short __thiscall basic_streambuf_wchar_sgetc(basic_streambuf_wchar *this)
1869 TRACE("(%p)\n", this);
1870 return basic_streambuf_wchar__Gnavail(this) ?
1871 *basic_streambuf_wchar_gptr(this) : call_basic_streambuf_wchar_underflow(this);
1874 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
1875 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
1876 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_snextc, 4)
1877 unsigned short __thiscall basic_streambuf_wchar_snextc(basic_streambuf_wchar *this)
1879 TRACE("(%p)\n", this);
1881 if(basic_streambuf_wchar__Gnavail(this) > 1)
1882 return *basic_streambuf_wchar__Gnpreinc(this);
1883 return basic_streambuf_wchar_sbumpc(this)==WEOF ?
1884 WEOF : basic_streambuf_wchar_sgetc(this);
1887 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPBGH@Z */
1888 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEBG_J@Z */
1889 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsputn, 12)
1890 #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))
1891 streamsize __thiscall basic_streambuf_wchar_xsputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
1893 streamsize copied, chunk;
1895 TRACE("(%p %p %Id)\n", this, ptr, count);
1897 for(copied=0; copied<count;) {
1898 chunk = basic_streambuf_wchar__Pnavail(this);
1899 if(chunk > count-copied)
1900 chunk = count-copied;
1902 if(chunk > 0) {
1903 memcpy(*this->pwpos, ptr+copied, chunk*sizeof(wchar_t));
1904 *this->pwpos += chunk;
1905 *this->pwsize -= chunk;
1906 copied += chunk;
1907 }else if(call_basic_streambuf_wchar_overflow(this, ptr[copied]) != WEOF) {
1908 copied++;
1909 }else {
1910 break;
1914 return copied;
1917 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPBGH@Z */
1918 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEBG_J@Z */
1919 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputn, 12)
1920 streamsize __thiscall basic_streambuf_wchar_sputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
1922 TRACE("(%p %p %Id)\n", this, ptr, count);
1923 return call_basic_streambuf_wchar_xsputn(this, ptr, count);
1926 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
1927 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
1928 int basic_filebuf_char__Init__Stinit = 0;
1930 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
1931 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
1932 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Init, 12)
1933 void __thiscall basic_filebuf_char__Init(basic_filebuf_char *this, FILE *file, basic_filebuf__Initfl which)
1935 TRACE("(%p %p %d)\n", this, file, which);
1937 this->cvt = NULL;
1938 this->state0 = basic_filebuf_char__Init__Stinit;
1939 this->state = basic_filebuf_char__Init__Stinit;
1940 if(which == INITFL_new)
1941 this->str = NULL;
1942 this->close = (which == INITFL_open);
1943 this->file = file;
1945 basic_streambuf_char__Init_empty(&this->base);
1946 if(file)
1947 basic_streambuf_char__Init(&this->base, &file->_base, &file->_ptr,
1948 &file->_cnt, &file->_base, &file->_ptr, &file->_cnt);
1951 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXXZ */
1952 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */
1953 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt, 4)
1954 void __thiscall basic_filebuf_char__Initcvt(basic_filebuf_char *this)
1956 codecvt_char *cvt = codecvt_char_use_facet(IOS_LOCALE(&this->base));
1958 TRACE("(%p)\n", this);
1960 locale__Addfac(&this->loc, &cvt->base.facet, codecvt_char_id.id, LC_CTYPE);
1961 if(codecvt_base_always_noconv(&cvt->base)) {
1962 this->cvt = NULL;
1963 }else {
1964 this->str = operator_new(sizeof(basic_string_char));
1965 MSVCP_basic_string_char_ctor(this->str);
1966 this->cvt = cvt;
1970 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@XZ */
1971 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@XZ */
1972 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_close, 4)
1973 basic_filebuf_char* __thiscall basic_filebuf_char_close(basic_filebuf_char *this)
1975 basic_filebuf_char *ret = this;
1977 TRACE("(%p)\n", this);
1979 if(!this->file || fclose(this->file))
1980 return NULL;
1982 basic_filebuf_char__Init(this, NULL, INITFL_close);
1983 return ret;
1986 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
1987 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
1988 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_file, 8)
1989 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_file(basic_filebuf_char *this, FILE *file)
1991 TRACE("(%p %p)\n", this, file);
1993 basic_streambuf_char_ctor(&this->base);
1994 this->base.vtable = &basic_filebuf_char_vtable;
1996 locale_ctor(&this->loc);
1997 basic_filebuf_char__Init(this, file, INITFL_new);
1998 return this;
2001 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
2002 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
2003 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor, 4)
2004 basic_filebuf_char* __thiscall basic_filebuf_char_ctor(basic_filebuf_char *this)
2006 return basic_filebuf_char_ctor_file(this, NULL);
2009 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
2010 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
2011 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_uninitialized, 8)
2012 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_uninitialized(basic_filebuf_char *this, int uninitialized)
2014 TRACE("(%p %d)\n", this, uninitialized);
2016 basic_streambuf_char_ctor_uninitialized(&this->base, 0);
2017 this->base.vtable = &basic_filebuf_char_vtable;
2018 locale_ctor(&this->loc);
2019 return this;
2022 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
2023 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
2024 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_dtor, 4)
2025 void __thiscall basic_filebuf_char_dtor(basic_filebuf_char *this)
2027 TRACE("(%p)\n", this);
2029 if(this->close)
2030 basic_filebuf_char_close(this);
2031 if(this->str) {
2032 MSVCP_basic_string_char_dtor(this->str);
2033 operator_delete(this->str);
2035 locale_dtor(&this->loc);
2036 basic_streambuf_char_dtor(&this->base);
2039 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_vector_dtor, 8)
2040 basic_filebuf_char* __thiscall basic_filebuf_char_vector_dtor(basic_filebuf_char *this, unsigned int flags)
2042 TRACE("(%p %x)\n", this, flags);
2043 if(flags & 2) {
2044 /* we have an array, with the number of elements stored before the first object */
2045 INT_PTR i, *ptr = (INT_PTR *)this-1;
2047 for(i=*ptr-1; i>=0; i--)
2048 basic_filebuf_char_dtor(this+i);
2049 operator_delete(ptr);
2050 } else {
2051 basic_filebuf_char_dtor(this);
2052 if(flags & 1)
2053 operator_delete(this);
2056 return this;
2059 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QBE_NXZ */
2060 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
2061 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_is_open, 4)
2062 bool __thiscall basic_filebuf_char_is_open(const basic_filebuf_char *this)
2064 TRACE("(%p)\n", this);
2065 return this->file != NULL;
2068 /* ?_Fiopen@std@@YAPAU_iobuf@@PB_WHH@Z */
2069 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEB_WHH@Z */
2070 static FILE* _Fiopen_wchar(const wchar_t *name, int mode, int prot)
2072 static const struct {
2073 int mode;
2074 const wchar_t str[4];
2075 const wchar_t str_bin[4];
2076 } str_mode[] = {
2077 {OPENMODE_out, L"w", L"wb"},
2078 {OPENMODE_out|OPENMODE_app, L"a", L"ab"},
2079 {OPENMODE_app, L"a", L"ab"},
2080 {OPENMODE_out|OPENMODE_trunc, L"w", L"wb"},
2081 {OPENMODE_in, L"r", L"rb"},
2082 {OPENMODE_in|OPENMODE_out, L"r+", L"r+b"},
2083 {OPENMODE_in|OPENMODE_out|OPENMODE_trunc, L"w+", L"w+b"},
2084 {OPENMODE_in|OPENMODE_out|OPENMODE_app, L"a+", L"a+b"},
2085 {OPENMODE_in|OPENMODE_app, L"a+", L"a+b"}
2088 int real_mode = mode & ~(OPENMODE_ate|OPENMODE__Nocreate|OPENMODE__Noreplace|OPENMODE_binary);
2089 size_t mode_idx;
2090 FILE *f = NULL;
2092 TRACE("(%s %d %d)\n", debugstr_w(name), mode, prot);
2094 for(mode_idx=0; mode_idx<ARRAY_SIZE(str_mode); mode_idx++)
2095 if(str_mode[mode_idx].mode == real_mode)
2096 break;
2097 if(mode_idx == ARRAY_SIZE(str_mode))
2098 return NULL;
2100 if((mode & OPENMODE__Nocreate) && !(f = _wfopen(name, L"r")))
2101 return NULL;
2102 else if(f)
2103 fclose(f);
2105 if((mode & OPENMODE__Noreplace) && (mode & (OPENMODE_out|OPENMODE_app))
2106 && (f = _wfopen(name, L"r"))) {
2107 fclose(f);
2108 return NULL;
2111 f = _wfsopen(name, (mode & OPENMODE_binary) ? str_mode[mode_idx].str_bin
2112 : str_mode[mode_idx].str, prot);
2113 if(!f)
2114 return NULL;
2116 if((mode & OPENMODE_ate) && fseek(f, 0, SEEK_END)) {
2117 fclose(f);
2118 return NULL;
2121 return f;
2124 /* ?__Fiopen@std@@YAPAU_iobuf@@PBDH@Z */
2125 /* ?__Fiopen@std@@YAPEAU_iobuf@@PEBDH@Z */
2126 FILE* __cdecl ___Fiopen(const char *name, int mode)
2128 wchar_t nameW[FILENAME_MAX];
2130 TRACE("(%p %d)\n", name, mode);
2132 if(!MultiByteToWideChar(CP_ACP, 0, name, -1, nameW, FILENAME_MAX-1))
2133 return NULL;
2134 return _Fiopen_wchar(nameW, mode, _SH_DENYNO);
2137 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDH@Z */
2138 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDH@Z */
2139 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDI@Z */
2140 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDI@Z */
2141 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode, 12)
2142 basic_filebuf_char* __thiscall basic_filebuf_char_open_mode(basic_filebuf_char *this, const char *name, unsigned int mode)
2144 FILE *f = NULL;
2146 TRACE("(%p %s %d)\n", this, name, mode);
2148 if(basic_filebuf_char_is_open(this))
2149 return NULL;
2150 if(!(f = ___Fiopen(name, mode)))
2151 return NULL;
2153 basic_filebuf_char__Init(this, f, INITFL_open);
2154 basic_filebuf_char__Initcvt(this);
2155 return this;
2158 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDF@Z */
2159 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDF@Z */
2160 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode_old, 12)
2161 basic_filebuf_char* __thiscall basic_filebuf_char_open_mode_old(basic_filebuf_char *this, const char *name, short mode)
2163 return basic_filebuf_char_open_mode(this, name, mode);
2166 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
2167 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
2168 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_overflow, 8)
2169 int __thiscall basic_filebuf_char_overflow(basic_filebuf_char *this, int c)
2171 char *ptr, ch = c, *to_next;
2172 const char *from_next;
2173 int ret;
2176 TRACE("(%p %d)\n", this, c);
2178 if(!basic_filebuf_char_is_open(this))
2179 return EOF;
2180 if(c == EOF)
2181 return !c;
2183 if(!this->cvt)
2184 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
2186 from_next = &ch;
2187 MSVCP_basic_string_char_clear(this->str);
2188 MSVCP_basic_string_char_append_len_ch(this->str, 8, '\0');
2189 ptr = this->str->ptr;
2190 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1, &from_next,
2191 ptr, ptr+MSVCP_basic_string_char_length(this->str), &to_next);
2193 switch(ret) {
2194 case CODECVT_partial:
2195 if(from_next == &ch)
2196 return EOF;
2197 case CODECVT_ok:
2198 if(!fwrite(ptr, to_next-ptr, 1, this->file))
2199 return EOF;
2200 return c;
2201 case CODECVT_noconv:
2202 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
2203 default:
2204 return EOF;
2208 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
2209 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
2210 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_pbackfail, 8)
2211 int __thiscall basic_filebuf_char_pbackfail(basic_filebuf_char *this, int c)
2213 TRACE("(%p %d)\n", this, c);
2215 if(!basic_filebuf_char_is_open(this))
2216 return EOF;
2218 if(basic_streambuf_char_gptr(&this->base)>basic_streambuf_char_eback(&this->base)
2219 && (c==EOF || (int)(unsigned char)basic_streambuf_char_gptr(&this->base)[-1]==c)) {
2220 basic_streambuf_char__Gndec(&this->base);
2221 return c==EOF ? !c : c;
2222 }else if(c == EOF) {
2223 return EOF;
2224 }else if(!this->cvt) {
2225 return ungetc(c, this->file);
2226 }else if(MSVCP_basic_string_char_length(this->str)) {
2227 char *b, *e, *cur;
2229 e = this->str->ptr;
2230 b = e+this->str->size-1;
2231 for(cur = b; cur>=e; cur--) {
2232 if(ungetc(*cur, this->file) == EOF) {
2233 for(; cur<=b; cur++)
2234 fgetc(this->file);
2235 return EOF;
2238 MSVCP_basic_string_char_clear(this->str);
2239 this->state = this->state0;
2240 return c;
2243 return EOF;
2246 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2247 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2248 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_uflow, 4)
2249 int __thiscall basic_filebuf_char_uflow(basic_filebuf_char *this)
2251 char ch, *to_next;
2252 const char *buf_next;
2253 int c;
2255 TRACE("(%p)\n", this);
2257 if(!basic_filebuf_char_is_open(this))
2258 return EOF;
2260 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
2261 return (unsigned char)*basic_streambuf_char__Gninc(&this->base);
2263 c = fgetc(this->file);
2264 if(!this->cvt || c==EOF)
2265 return c;
2267 MSVCP_basic_string_char_clear(this->str);
2268 this->state0 = this->state;
2269 while(1) {
2270 MSVCP_basic_string_char_append_ch(this->str, c);
2271 this->state = this->state0;
2273 switch(codecvt_char_in(this->cvt, &this->state, this->str->ptr,
2274 this->str->ptr+this->str->size, &buf_next, &ch, &ch+1, &to_next)) {
2275 case CODECVT_partial:
2276 break;
2277 case CODECVT_noconv:
2278 return (unsigned char)this->str->ptr[0];
2279 case CODECVT_ok:
2280 return (unsigned char)ch;
2281 default:
2282 return EOF;
2285 c = fgetc(this->file);
2286 if(c == EOF)
2287 return EOF;
2291 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2292 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2293 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_underflow, 4)
2294 int __thiscall basic_filebuf_char_underflow(basic_filebuf_char *this)
2296 int ret;
2298 TRACE("(%p)\n", this);
2300 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
2301 return (unsigned char)*basic_streambuf_char_gptr(&this->base);
2303 ret = call_basic_streambuf_char_uflow(&this->base);
2304 if(ret != EOF)
2305 ret = call_basic_streambuf_char_pbackfail(&this->base, ret);
2306 return ret;
2309 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
2310 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
2311 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2312 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2313 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekoff, 20)
2314 fpos_int* __thiscall basic_filebuf_char_seekoff(basic_filebuf_char *this,
2315 fpos_int *ret, streamoff off, int way, int mode)
2317 fpos_t pos;
2319 TRACE("(%p %p %Id %d %d)\n", this, ret, off, way, mode);
2321 if(!basic_filebuf_char_is_open(this) || fseek(this->file, off, way)) {
2322 ret->off = -1;
2323 ret->pos = 0;
2324 ret->state = 0;
2325 return ret;
2328 fgetpos(this->file, &pos);
2329 ret->off = 0;
2330 ret->pos = pos;
2331 ret->state = this->state;
2332 return ret;
2335 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2336 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2337 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekpos, 36)
2338 fpos_int* __thiscall basic_filebuf_char_seekpos(basic_filebuf_char *this,
2339 fpos_int *ret, fpos_int pos, int mode)
2341 fpos_t fpos;
2343 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
2345 if(!basic_filebuf_char_is_open(this) || fseek(this->file, (LONG)pos.pos, SEEK_SET)
2346 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
2347 ret->off = -1;
2348 ret->pos = 0;
2349 ret->state = 0;
2350 return ret;
2353 fgetpos(this->file, &fpos);
2354 ret->off = 0;
2355 ret->pos = fpos;
2356 ret->state = this->state;
2357 return ret;
2360 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PADH@Z */
2361 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAD_J@Z */
2362 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_setbuf, 12)
2363 basic_streambuf_char* __thiscall basic_filebuf_char_setbuf(basic_filebuf_char *this, char *buf, streamsize count)
2365 TRACE("(%p %p %Id)\n", this, buf, count);
2367 if(!basic_filebuf_char_is_open(this))
2368 return NULL;
2370 if(setvbuf(this->file, buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count))
2371 return NULL;
2373 basic_filebuf_char__Init(this, this->file, INITFL_open);
2374 return &this->base;
2377 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2378 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2379 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_sync, 4)
2380 int __thiscall basic_filebuf_char_sync(basic_filebuf_char *this)
2382 TRACE("(%p)\n", this);
2384 if(!basic_filebuf_char_is_open(this))
2385 return 0;
2387 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
2388 return 0;
2389 return fflush(this->file);
2392 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
2393 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
2394 int basic_filebuf_short__Init__Stinit = 0;
2396 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
2397 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
2398 DEFINE_THISCALL_WRAPPER(basic_filebuf_short__Init, 12)
2399 void __thiscall basic_filebuf_short__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
2401 TRACE("(%p %p %d)\n", this, file, which);
2403 this->cvt = NULL;
2404 this->state0 = basic_filebuf_short__Init__Stinit;
2405 this->state = basic_filebuf_short__Init__Stinit;
2406 if(which == INITFL_new)
2407 this->str = NULL;
2408 this->close = (which == INITFL_open);
2409 this->file = file;
2411 basic_streambuf_wchar__Init_empty(&this->base);
2414 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXXZ */
2415 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */
2416 DEFINE_THISCALL_WRAPPER(basic_filebuf_short__Initcvt, 4)
2417 void __thiscall basic_filebuf_short__Initcvt(basic_filebuf_wchar *this)
2419 codecvt_wchar *cvt = codecvt_short_use_facet(IOS_LOCALE(&this->base));
2421 TRACE("(%p)\n", this);
2423 if(codecvt_base_always_noconv(&cvt->base)) {
2424 this->cvt = NULL;
2425 }else {
2426 basic_streambuf_wchar__Init_empty(&this->base);
2427 this->cvt = cvt;
2431 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@XZ */
2432 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@XZ */
2433 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_close, 4)
2434 basic_filebuf_wchar* __thiscall basic_filebuf_short_close(basic_filebuf_wchar *this)
2436 basic_filebuf_wchar *ret = this;
2438 TRACE("(%p)\n", this);
2440 if(!this->file || fclose(this->file))
2441 return NULL;
2443 basic_filebuf_short__Init(this, NULL, INITFL_close);
2444 return ret;
2447 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
2448 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
2449 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_file, 8)
2450 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_file(basic_filebuf_wchar *this, FILE *file)
2452 TRACE("(%p %p)\n", this, file);
2454 basic_streambuf_short_ctor(&this->base);
2455 this->base.vtable = &basic_filebuf_short_vtable;
2457 locale_ctor(&this->loc);
2458 basic_filebuf_short__Init(this, file, INITFL_new);
2459 return this;
2462 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2463 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2464 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor, 4)
2465 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor(basic_filebuf_wchar *this)
2467 return basic_filebuf_short_ctor_file(this, NULL);
2470 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
2471 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
2472 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_uninitialized, 8)
2473 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
2475 TRACE("(%p %d)\n", this, uninitialized);
2477 basic_streambuf_short_ctor_uninitialized(&this->base, 0);
2478 this->base.vtable = &basic_filebuf_short_vtable;
2479 locale_ctor(&this->loc);
2480 return this;
2483 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
2484 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
2485 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_dtor, 4)
2486 void __thiscall basic_filebuf_short_dtor(basic_filebuf_wchar *this)
2488 TRACE("(%p)\n", this);
2490 if(this->close)
2491 basic_filebuf_short_close(this);
2492 if(this->str) {
2493 MSVCP_basic_string_char_dtor(this->str);
2494 operator_delete(this->str);
2496 locale_dtor(&this->loc);
2497 basic_streambuf_wchar_dtor(&this->base);
2500 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_vector_dtor, 8)
2501 basic_filebuf_wchar* __thiscall basic_filebuf_short_vector_dtor(basic_filebuf_wchar *this, unsigned int flags)
2503 TRACE("(%p %x)\n", this, flags);
2504 if(flags & 2) {
2505 /* we have an array, with the number of elements stored before the first object */
2506 INT_PTR i, *ptr = (INT_PTR *)this-1;
2508 for(i=*ptr-1; i>=0; i--)
2509 basic_filebuf_short_dtor(this+i);
2510 operator_delete(ptr);
2511 } else {
2512 basic_filebuf_short_dtor(this);
2513 if(flags & 1)
2514 operator_delete(this);
2517 return this;
2520 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QBE_NXZ */
2521 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
2522 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_is_open, 4)
2523 bool __thiscall basic_filebuf_short_is_open(const basic_filebuf_wchar *this)
2525 TRACE("(%p)\n", this);
2526 return this->file != NULL;
2529 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDH@Z */
2530 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDH@Z */
2531 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_mode, 12)
2532 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
2534 wchar_t nameW[FILENAME_MAX];
2535 FILE *f = NULL;
2537 TRACE("(%p %p %u)\n", this, name, mode);
2539 if(basic_filebuf_short_is_open(this))
2540 return NULL;
2542 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
2543 return NULL;
2545 if(!(f = _Fiopen_wchar(nameW, mode, SH_DENYNO)))
2546 return NULL;
2548 basic_filebuf_short__Init(this, f, INITFL_open);
2549 basic_filebuf_short__Initcvt(this);
2550 return this;
2553 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDF@Z */
2554 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDF@Z */
2555 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_mode_old, 12)
2556 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_mode_old(basic_filebuf_wchar *this, const char *name, short mode)
2558 TRACE("(%p %p %d)\n", this, name, mode);
2559 return basic_filebuf_short_open_mode(this, name, mode);
2562 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
2563 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
2564 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_overflow, 8)
2565 unsigned short __thiscall basic_filebuf_short_overflow(basic_filebuf_wchar *this, unsigned short c)
2567 char *ptr, *to_next;
2568 wchar_t ch = c;
2569 const wchar_t *from_next;
2570 unsigned short ret;
2573 TRACE("(%p %d)\n", this, c);
2575 if(!basic_filebuf_short_is_open(this))
2576 return WEOF;
2577 if(c == WEOF)
2578 return !c;
2580 if(!this->cvt)
2581 return fwrite(&ch, sizeof(wchar_t), 1, this->file) ? c : WEOF;
2583 from_next = &ch;
2584 MSVCP_basic_string_char_clear(this->str);
2585 MSVCP_basic_string_char_append_len_ch(this->str, 8, '\0');
2586 ptr = this->str->ptr;
2587 ret = codecvt_wchar_out(this->cvt, &this->state, &ch, &ch+1, &from_next,
2588 ptr, ptr+MSVCP_basic_string_char_length(this->str), &to_next);
2590 switch(ret) {
2591 case CODECVT_partial:
2592 if(from_next == &ch)
2593 return WEOF;
2594 /* fall through */
2595 case CODECVT_ok:
2596 if(!fwrite(ptr, to_next-ptr, 1, this->file))
2597 return WEOF;
2598 return c;
2599 case CODECVT_noconv:
2600 return fwrite(&ch, sizeof(wchar_t), 1, this->file) ? c : WEOF;
2601 default:
2602 return WEOF;
2606 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
2607 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
2608 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_pbackfail, 8)
2609 unsigned short __thiscall basic_filebuf_short_pbackfail(basic_filebuf_wchar *this, unsigned short c)
2611 TRACE("(%p %d)\n", this, c);
2613 if(!basic_filebuf_short_is_open(this))
2614 return WEOF;
2616 if(basic_streambuf_wchar_gptr(&this->base)>basic_streambuf_wchar_eback(&this->base)
2617 && (c==WEOF || basic_streambuf_wchar_gptr(&this->base)[-1]==c)) {
2618 basic_streambuf_wchar__Gndec(&this->base);
2619 return c==WEOF ? !c : c;
2620 }else if(c == WEOF) {
2621 return WEOF;
2622 }else if(!this->cvt) {
2623 return ungetwc(c, this->file);
2624 }else if(MSVCP_basic_string_char_length(this->str)) {
2625 char *b, *e, *cur;
2627 e = this->str->ptr;
2628 b = e+this->str->size-1;
2629 for(cur = b; cur>=e; cur--) {
2630 if(ungetc(*cur, this->file) == EOF) {
2631 for(; cur<=b; cur++)
2632 fgetc(this->file);
2633 return WEOF;
2636 MSVCP_basic_string_char_clear(this->str);
2637 this->state = this->state0;
2638 return c;
2641 return WEOF;
2644 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
2645 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
2646 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_uflow, 4)
2647 unsigned short __thiscall basic_filebuf_short_uflow(basic_filebuf_wchar *this)
2649 wchar_t ch, *to_next;
2650 const char *buf_next;
2651 int c;
2653 TRACE("(%p)\n", this);
2655 if(!basic_filebuf_short_is_open(this))
2656 return WEOF;
2658 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
2659 return *basic_streambuf_wchar__Gninc(&this->base);
2661 if(!this->cvt)
2662 return fgetwc(this->file);
2664 MSVCP_basic_string_char_clear(this->str);
2665 this->state0 = this->state;
2666 while(1) {
2667 if((c = fgetc(this->file)) == EOF)
2668 return WEOF;
2669 MSVCP_basic_string_char_append_ch(this->str, c);
2670 this->state = this->state0;
2672 switch(codecvt_wchar_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 if(this->str->size < sizeof(unsigned short)/sizeof(char))
2678 break;
2679 return *(unsigned short*)this->str->ptr;
2680 case CODECVT_ok:
2681 return (unsigned short)ch;
2682 default:
2683 return WEOF;
2688 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
2689 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
2690 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_underflow, 4)
2691 unsigned short __thiscall basic_filebuf_short_underflow(basic_filebuf_wchar *this)
2693 unsigned short ret;
2695 TRACE("(%p)\n", this);
2697 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
2698 return *basic_streambuf_wchar_gptr(&this->base);
2700 ret = call_basic_streambuf_wchar_uflow(&this->base);
2701 if(ret != WEOF)
2702 ret = call_basic_streambuf_wchar_pbackfail(&this->base, ret);
2703 return ret;
2706 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
2707 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
2708 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2709 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2710 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_seekoff, 20)
2711 fpos_int* __thiscall basic_filebuf_short_seekoff(basic_filebuf_wchar *this,
2712 fpos_int *ret, streamoff off, int way, int mode)
2714 fpos_t pos;
2716 TRACE("(%p %p %Id %d %d)\n", this, ret, off, way, mode);
2718 if(!basic_filebuf_short_is_open(this) || fseek(this->file, off, way)) {
2719 ret->off = -1;
2720 ret->pos = 0;
2721 ret->state = 0;
2722 return ret;
2725 fgetpos(this->file, &pos);
2726 ret->off = 0;
2727 ret->pos = pos;
2728 ret->state = this->state;
2729 return ret;
2732 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2733 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2734 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_seekpos, 36)
2735 fpos_int* __thiscall basic_filebuf_short_seekpos(basic_filebuf_wchar *this,
2736 fpos_int *ret, fpos_int pos, int mode)
2738 fpos_t fpos;
2740 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
2742 if(!basic_filebuf_short_is_open(this) || fseek(this->file, (LONG)pos.pos, SEEK_SET)
2743 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
2744 ret->off = -1;
2745 ret->pos = 0;
2746 ret->state = 0;
2747 return ret;
2750 fgetpos(this->file, &fpos);
2751 ret->off = 0;
2752 ret->pos = fpos;
2753 ret->state = this->state;
2754 return ret;
2757 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAGH@Z */
2758 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAG_J@Z */
2759 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_setbuf, 12)
2760 basic_streambuf_wchar* __thiscall basic_filebuf_short_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
2762 TRACE("(%p %p %Id)\n", this, buf, count);
2764 if(!basic_filebuf_short_is_open(this))
2765 return NULL;
2767 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
2768 return NULL;
2770 basic_filebuf_short__Init(this, this->file, INITFL_open);
2771 return &this->base;
2774 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2775 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
2776 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_sync, 4)
2777 int __thiscall basic_filebuf_short_sync(basic_filebuf_wchar *this)
2779 TRACE("(%p)\n", this);
2781 if(!basic_filebuf_short_is_open(this))
2782 return 0;
2784 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
2785 return 0;
2786 return fflush(this->file);
2789 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */
2790 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAHH@Z */
2791 /* ?_Mode@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */
2792 /* ?_Mode@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAHH@Z */
2793 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Getstate, 8)
2794 int __thiscall basic_stringbuf_char__Getstate(basic_stringbuf_char *this, IOSB_openmode mode)
2796 int state = 0;
2798 if(!(mode & OPENMODE_in))
2799 state |= STRINGBUF_no_read;
2801 if(!(mode & OPENMODE_out))
2802 state |= STRINGBUF_no_write;
2804 if(mode & OPENMODE_ate)
2805 state |= STRINGBUF_at_end;
2807 if(mode & OPENMODE_app)
2808 state |= STRINGBUF_append;
2810 return state;
2813 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXPBDIH@Z */
2814 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXPEBD_KH@Z */
2815 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Init, 16)
2816 void __thiscall basic_stringbuf_char__Init(basic_stringbuf_char *this, const char *str, size_t count, int state)
2818 TRACE("(%p, %p, %Iu, %d)\n", this, str, count, state);
2820 basic_streambuf_char__Init_empty(&this->base);
2822 this->state = state;
2823 this->seekhigh = NULL;
2825 if(count && str) {
2826 char *buf = operator_new(count);
2828 memcpy(buf, str, count);
2829 this->seekhigh = buf + count;
2831 this->state |= STRINGBUF_allocated;
2833 if(!(state & STRINGBUF_no_read))
2834 basic_streambuf_char_setg(&this->base, buf, buf, buf + count);
2836 if(!(state & STRINGBUF_no_write)) {
2837 basic_streambuf_char_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
2839 if(!basic_streambuf_char_gptr(&this->base))
2840 basic_streambuf_char_setg(&this->base, buf, 0, buf);
2845 /* ??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 */
2846 /* ??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 */
2847 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_str, 12)
2848 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_str(basic_stringbuf_char *this,
2849 const basic_string_char *str, IOSB_openmode mode)
2851 TRACE("(%p %p %d)\n", this, str, mode);
2853 basic_streambuf_char_ctor(&this->base);
2854 this->base.vtable = &basic_stringbuf_char_vtable;
2856 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str),
2857 str->size, basic_stringbuf_char__Getstate(this, mode));
2858 return this;
2861 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
2862 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
2863 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_mode, 8)
2864 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_mode(
2865 basic_stringbuf_char *this, IOSB_openmode mode)
2867 TRACE("(%p %d)\n", this, mode);
2869 basic_streambuf_char_ctor(&this->base);
2870 this->base.vtable = &basic_stringbuf_char_vtable;
2872 basic_stringbuf_char__Init(this, NULL, 0, basic_stringbuf_char__Getstate(this, mode));
2873 return this;
2876 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
2877 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
2878 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor, 4)
2879 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor(basic_stringbuf_char *this)
2881 return basic_stringbuf_char_ctor_mode(this, OPENMODE_in|OPENMODE_out);
2884 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXXZ */
2885 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXXZ */
2886 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Tidy, 4)
2887 void __thiscall basic_stringbuf_char__Tidy(basic_stringbuf_char *this)
2889 TRACE("(%p)\n", this);
2891 if(this->state & STRINGBUF_allocated) {
2892 operator_delete(basic_streambuf_char_eback(&this->base));
2893 this->seekhigh = NULL;
2894 this->state &= ~STRINGBUF_allocated;
2897 basic_streambuf_char__Init_empty(&this->base);
2900 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
2901 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
2902 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_dtor, 4)
2903 void __thiscall basic_stringbuf_char_dtor(basic_stringbuf_char *this)
2905 TRACE("(%p)\n", this);
2907 basic_stringbuf_char__Tidy(this);
2908 basic_streambuf_char_dtor(&this->base);
2911 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_vector_dtor, 8)
2912 basic_stringbuf_char* __thiscall basic_stringbuf_char_vector_dtor(basic_stringbuf_char *this, unsigned int flags)
2914 TRACE("(%p %x)\n", this, flags);
2916 if(flags & 2) {
2917 /* we have an array, with the number of elements stored before the first object */
2918 INT_PTR i, *ptr = (INT_PTR *) this - 1;
2920 for (i = *ptr - 1; i >= 0; i--)
2921 basic_stringbuf_char_dtor(this+i);
2923 operator_delete(ptr);
2924 }else {
2925 basic_stringbuf_char_dtor(this);
2927 if(flags & 1)
2928 operator_delete(this);
2931 return this;
2934 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
2935 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
2936 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_overflow, 8)
2937 int __thiscall basic_stringbuf_char_overflow(basic_stringbuf_char *this, int meta)
2939 size_t oldsize, size;
2940 char *ptr, *buf;
2942 TRACE("(%p %x)\n", this, meta);
2944 if(meta == EOF)
2945 return !EOF;
2946 if(this->state & STRINGBUF_no_write)
2947 return EOF;
2949 ptr = basic_streambuf_char_pptr(&this->base);
2950 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
2951 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
2952 this->seekhigh, basic_streambuf_char_epptr(&this->base));
2954 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
2955 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = meta);
2957 oldsize = (ptr ? basic_streambuf_char_epptr(&this->base)-basic_streambuf_char_eback(&this->base): 0);
2958 size = oldsize|0xf;
2959 size += size/2;
2960 buf = operator_new(size);
2962 if(!oldsize) {
2963 this->seekhigh = buf;
2964 basic_streambuf_char_setp(&this->base, buf, buf+size);
2965 if(this->state & STRINGBUF_no_read)
2966 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
2967 else
2968 basic_streambuf_char_setg(&this->base, buf, buf, buf+1);
2970 this->state |= STRINGBUF_allocated;
2971 }else {
2972 ptr = basic_streambuf_char_eback(&this->base);
2973 memcpy(buf, ptr, oldsize);
2975 this->seekhigh = buf+(this->seekhigh-ptr);
2976 basic_streambuf_char_setp_next(&this->base, buf,
2977 buf+(basic_streambuf_char_pptr(&this->base)-ptr), buf+size);
2978 if(this->state & STRINGBUF_no_read)
2979 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
2980 else
2981 basic_streambuf_char_setg(&this->base, buf,
2982 buf+(basic_streambuf_char_gptr(&this->base)-ptr),
2983 basic_streambuf_char_pptr(&this->base)+1);
2985 operator_delete(ptr);
2988 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = meta);
2991 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
2992 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
2993 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_pbackfail, 8)
2994 int __thiscall basic_stringbuf_char_pbackfail(basic_stringbuf_char *this, int c)
2996 char *cur;
2998 TRACE("(%p %x)\n", this, c);
3000 cur = basic_streambuf_char_gptr(&this->base);
3001 if(!cur || cur==basic_streambuf_char_eback(&this->base)
3002 || (c!=EOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
3003 return EOF;
3005 if(c != EOF)
3006 cur[-1] = c;
3007 basic_streambuf_char_gbump(&this->base, -1);
3008 return c==EOF ? !EOF : c;
3011 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHXZ */
3012 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHXZ */
3013 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_underflow, 4)
3014 int __thiscall basic_stringbuf_char_underflow(basic_stringbuf_char *this)
3016 char *ptr, *cur;
3018 TRACE("(%p)\n", this);
3020 cur = basic_streambuf_char_gptr(&this->base);
3021 if(!cur || this->state&STRINGBUF_no_read)
3022 return EOF;
3024 ptr = basic_streambuf_char_pptr(&this->base);
3025 if(this->seekhigh < ptr)
3026 this->seekhigh = ptr;
3028 ptr = basic_streambuf_char_egptr(&this->base);
3029 if(this->seekhigh > ptr)
3030 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base), cur, this->seekhigh);
3032 if(cur < this->seekhigh)
3033 return (unsigned char)*cur;
3034 return EOF;
3037 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
3038 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
3039 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3040 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3041 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekoff, 20)
3042 fpos_int* __thiscall basic_stringbuf_char_seekoff(basic_stringbuf_char *this,
3043 fpos_int *ret, streamoff off, int way, int mode)
3045 char *beg, *cur_r, *cur_w;
3047 TRACE("(%p %p %Id %d %d)\n", this, ret, off, way, mode);
3049 cur_w = basic_streambuf_char_pptr(&this->base);
3050 if(cur_w > this->seekhigh)
3051 this->seekhigh = cur_w;
3053 ret->off = 0;
3054 ret->pos = 0;
3055 ret->state = 0;
3057 beg = basic_streambuf_char_eback(&this->base);
3058 cur_r = basic_streambuf_char_gptr(&this->base);
3059 if((mode & OPENMODE_in) && cur_r) {
3060 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
3061 off += cur_r-beg;
3062 else if(way == SEEKDIR_end)
3063 off += this->seekhigh-beg;
3064 else if(way != SEEKDIR_beg)
3065 off = -1;
3067 if(off<0 || off>this->seekhigh-beg) {
3068 off = -1;
3069 }else {
3070 basic_streambuf_char_gbump(&this->base, beg-cur_r+off);
3071 if((mode & OPENMODE_out) && cur_w) {
3072 basic_streambuf_char_setp_next(&this->base, beg,
3073 basic_streambuf_char_gptr(&this->base),
3074 basic_streambuf_char_epptr(&this->base));
3077 }else if((mode & OPENMODE_out) && cur_w) {
3078 if(way == SEEKDIR_cur)
3079 off += cur_w-beg;
3080 else if(way == SEEKDIR_end)
3081 off += this->seekhigh-beg;
3082 else if(way != SEEKDIR_beg)
3083 off = -1;
3085 if(off<0 || off>this->seekhigh-beg)
3086 off = -1;
3087 else
3088 basic_streambuf_char_pbump(&this->base, beg-cur_w+off);
3089 }else {
3090 off = -1;
3093 ret->off = off;
3094 return ret;
3097 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3098 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3099 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekpos, 36)
3100 fpos_int* __thiscall basic_stringbuf_char_seekpos(basic_stringbuf_char *this,
3101 fpos_int *ret, fpos_int pos, int mode)
3103 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
3105 if(pos.off==-1 && pos.pos==0 && pos.state==0) {
3106 *ret = pos;
3107 return ret;
3110 return basic_stringbuf_char_seekoff(this, ret, pos.pos+pos.off, SEEKDIR_beg, mode);
3113 /* ?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 */
3114 /* ?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 */
3115 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_set, 8)
3116 void __thiscall basic_stringbuf_char_str_set(basic_stringbuf_char *this, const basic_string_char *str)
3118 TRACE("(%p %p)\n", this, str);
3120 basic_stringbuf_char__Tidy(this);
3121 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str), str->size, this->state);
3124 /* ?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 */
3125 /* ?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 */
3126 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_get, 8)
3127 basic_string_char* __thiscall basic_stringbuf_char_str_get(const basic_stringbuf_char *this, basic_string_char *ret)
3129 char *ptr;
3131 TRACE("(%p)\n", this);
3133 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_char_pptr(&this->base)) {
3134 char *pptr;
3136 ptr = basic_streambuf_char_pbase(&this->base);
3137 pptr = basic_streambuf_char_pptr(&this->base);
3139 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
3142 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_char_gptr(&this->base)) {
3143 ptr = basic_streambuf_char_eback(&this->base);
3144 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, basic_streambuf_char_egptr(&this->base) - ptr);
3147 return MSVCP_basic_string_char_ctor(ret);
3150 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEHH@Z */
3151 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAHH@Z */
3152 /* ?_Mode@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEHH@Z */
3153 /* ?_Mode@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAHH@Z */
3154 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short__Getstate, 8)
3155 int __thiscall basic_stringbuf_short__Getstate(basic_stringbuf_wchar *this, IOSB_openmode mode)
3157 int state = 0;
3159 if(!(mode & OPENMODE_in))
3160 state |= STRINGBUF_no_read;
3162 if(!(mode & OPENMODE_out))
3163 state |= STRINGBUF_no_write;
3165 if(mode & OPENMODE_ate)
3166 state |= STRINGBUF_at_end;
3168 if(mode & OPENMODE_app)
3169 state |= STRINGBUF_append;
3171 return state;
3174 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXPBGIH@Z */
3175 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXPEBG_KH@Z */
3176 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short__Init, 16)
3177 void __thiscall basic_stringbuf_short__Init(basic_stringbuf_wchar *this, const wchar_t *str, size_t count, int state)
3179 TRACE("(%p, %p, %Iu, %d)\n", this, str, count, state);
3181 basic_streambuf_wchar__Init_empty(&this->base);
3183 this->state = state;
3184 this->seekhigh = NULL;
3186 if(count && str) {
3187 wchar_t *buf = operator_new(count*sizeof(wchar_t));
3189 memcpy(buf, str, count*sizeof(wchar_t));
3190 this->seekhigh = buf + count;
3192 this->state |= STRINGBUF_allocated;
3194 if(!(state & STRINGBUF_no_read))
3195 basic_streambuf_wchar_setg(&this->base, buf, buf, buf + count);
3197 if(!(state & STRINGBUF_no_write)) {
3198 basic_streambuf_wchar_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
3200 if(!basic_streambuf_wchar_gptr(&this->base))
3201 basic_streambuf_wchar_setg(&this->base, buf, 0, buf);
3206 /* ??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 */
3207 /* ??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 */
3208 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_str, 12)
3209 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_str(basic_stringbuf_wchar *this,
3210 const basic_string_wchar *str, IOSB_openmode mode)
3212 TRACE("(%p %p %d)\n", this, str, mode);
3214 basic_streambuf_short_ctor(&this->base);
3215 this->base.vtable = &basic_stringbuf_short_vtable;
3217 basic_stringbuf_short__Init(this, MSVCP_basic_string_wchar_c_str(str),
3218 str->size, basic_stringbuf_short__Getstate(this, mode));
3219 return this;
3222 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
3223 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
3224 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_mode, 8)
3225 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_mode(
3226 basic_stringbuf_wchar *this, IOSB_openmode mode)
3228 TRACE("(%p %d)\n", this, mode);
3230 basic_streambuf_short_ctor(&this->base);
3231 this->base.vtable = &basic_stringbuf_short_vtable;
3233 basic_stringbuf_short__Init(this, NULL, 0, basic_stringbuf_short__Getstate(this, mode));
3234 return this;
3237 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
3238 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
3239 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor, 4)
3240 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor(basic_stringbuf_wchar *this)
3242 return basic_stringbuf_short_ctor_mode(this, OPENMODE_in|OPENMODE_out);
3245 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXXZ */
3246 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXXZ */
3247 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short__Tidy, 4)
3248 void __thiscall basic_stringbuf_short__Tidy(basic_stringbuf_wchar *this)
3250 TRACE("(%p)\n", this);
3252 if(this->state & STRINGBUF_allocated) {
3253 operator_delete(basic_streambuf_wchar_eback(&this->base));
3254 this->seekhigh = NULL;
3255 this->state &= ~STRINGBUF_allocated;
3258 basic_streambuf_wchar__Init_empty(&this->base);
3261 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
3262 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
3263 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_dtor, 4)
3264 void __thiscall basic_stringbuf_short_dtor(basic_stringbuf_wchar *this)
3266 TRACE("(%p)\n", this);
3268 basic_stringbuf_short__Tidy(this);
3269 basic_streambuf_wchar_dtor(&this->base);
3272 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_vector_dtor, 8)
3273 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_vector_dtor(basic_stringbuf_wchar *this, unsigned int flags)
3275 TRACE("(%p %x)\n", this, flags);
3277 if(flags & 2) {
3278 /* we have an array, with the number of elements stored before the first object */
3279 INT_PTR i, *ptr = (INT_PTR *) this - 1;
3281 for (i = *ptr - 1; i >= 0; i--)
3282 basic_stringbuf_short_dtor(this+i);
3284 operator_delete(ptr);
3285 }else {
3286 basic_stringbuf_short_dtor(this);
3288 if(flags & 1)
3289 operator_delete(this);
3292 return this;
3295 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
3296 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
3297 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_overflow, 8)
3298 unsigned short __thiscall basic_stringbuf_short_overflow(basic_stringbuf_wchar *this, unsigned short meta)
3300 size_t oldsize, size;
3301 wchar_t *ptr, *buf;
3303 TRACE("(%p %x)\n", this, meta);
3305 if(meta == WEOF)
3306 return !WEOF;
3307 if(this->state & STRINGBUF_no_write)
3308 return WEOF;
3310 ptr = basic_streambuf_wchar_pptr(&this->base);
3311 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
3312 basic_streambuf_wchar_setp_next(&this->base, basic_streambuf_wchar_pbase(&this->base),
3313 this->seekhigh, basic_streambuf_wchar_epptr(&this->base));
3315 if(ptr && ptr<basic_streambuf_wchar_epptr(&this->base))
3316 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
3318 oldsize = (ptr ? basic_streambuf_wchar_epptr(&this->base)-basic_streambuf_wchar_eback(&this->base): 0);
3319 size = oldsize|0xf;
3320 size += size/2;
3321 buf = operator_new(size*sizeof(wchar_t));
3323 if(!oldsize) {
3324 this->seekhigh = buf;
3325 basic_streambuf_wchar_setp(&this->base, buf, buf+size);
3326 if(this->state & STRINGBUF_no_read)
3327 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
3328 else
3329 basic_streambuf_wchar_setg(&this->base, buf, buf, buf+1);
3331 this->state |= STRINGBUF_allocated;
3332 }else {
3333 ptr = basic_streambuf_wchar_eback(&this->base);
3334 memcpy(buf, ptr, oldsize*sizeof(wchar_t));
3336 this->seekhigh = buf+(this->seekhigh-ptr);
3337 basic_streambuf_wchar_setp_next(&this->base, buf,
3338 buf+(basic_streambuf_wchar_pptr(&this->base)-ptr), buf+size);
3339 if(this->state & STRINGBUF_no_read)
3340 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
3341 else
3342 basic_streambuf_wchar_setg(&this->base, buf,
3343 buf+(basic_streambuf_wchar_gptr(&this->base)-ptr),
3344 basic_streambuf_wchar_pptr(&this->base)+1);
3346 operator_delete(ptr);
3349 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
3352 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
3353 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
3354 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_pbackfail, 8)
3355 unsigned short __thiscall basic_stringbuf_short_pbackfail(basic_stringbuf_wchar *this, unsigned short c)
3357 wchar_t *cur;
3359 TRACE("(%p %x)\n", this, c);
3361 cur = basic_streambuf_wchar_gptr(&this->base);
3362 if(!cur || cur==basic_streambuf_wchar_eback(&this->base)
3363 || (c!=WEOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
3364 return WEOF;
3366 if(c != WEOF)
3367 cur[-1] = c;
3368 basic_streambuf_wchar_gbump(&this->base, -1);
3369 return c==WEOF ? !WEOF : c;
3372 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGXZ */
3373 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGXZ */
3374 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_underflow, 4)
3375 unsigned short __thiscall basic_stringbuf_short_underflow(basic_stringbuf_wchar *this)
3377 wchar_t *ptr, *cur;
3379 TRACE("(%p)\n", this);
3381 cur = basic_streambuf_wchar_gptr(&this->base);
3382 if(!cur || this->state&STRINGBUF_no_read)
3383 return WEOF;
3385 ptr = basic_streambuf_wchar_pptr(&this->base);
3386 if(this->seekhigh < ptr)
3387 this->seekhigh = ptr;
3389 ptr = basic_streambuf_wchar_egptr(&this->base);
3390 if(this->seekhigh > ptr)
3391 basic_streambuf_wchar_setg(&this->base, basic_streambuf_wchar_eback(&this->base), cur, this->seekhigh);
3393 if(cur < this->seekhigh)
3394 return *cur;
3395 return WEOF;
3398 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
3399 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
3400 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3401 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3402 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_seekoff, 20)
3403 fpos_int* __thiscall basic_stringbuf_short_seekoff(basic_stringbuf_wchar *this,
3404 fpos_int *ret, streamoff off, int way, int mode)
3406 wchar_t *beg, *cur_r, *cur_w;
3408 TRACE("(%p %p %Id %d %d)\n", this, ret, off, way, mode);
3410 cur_w = basic_streambuf_wchar_pptr(&this->base);
3411 if(cur_w > this->seekhigh)
3412 this->seekhigh = cur_w;
3414 ret->off = 0;
3415 ret->pos = 0;
3416 ret->state = 0;
3418 beg = basic_streambuf_wchar_eback(&this->base);
3419 cur_r = basic_streambuf_wchar_gptr(&this->base);
3420 if((mode & OPENMODE_in) && cur_r) {
3421 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
3422 off += cur_r-beg;
3423 else if(way == SEEKDIR_end)
3424 off += this->seekhigh-beg;
3425 else if(way != SEEKDIR_beg)
3426 off = -1;
3428 if(off<0 || off>this->seekhigh-beg) {
3429 off = -1;
3430 }else {
3431 basic_streambuf_wchar_gbump(&this->base, beg-cur_r+off);
3432 if((mode & OPENMODE_out) && cur_w) {
3433 basic_streambuf_wchar_setp_next(&this->base, beg,
3434 basic_streambuf_wchar_gptr(&this->base),
3435 basic_streambuf_wchar_epptr(&this->base));
3438 }else if((mode & OPENMODE_out) && cur_w) {
3439 if(way == SEEKDIR_cur)
3440 off += cur_w-beg;
3441 else if(way == SEEKDIR_end)
3442 off += this->seekhigh-beg;
3443 else if(way != SEEKDIR_beg)
3444 off = -1;
3446 if(off<0 || off>this->seekhigh-beg)
3447 off = -1;
3448 else
3449 basic_streambuf_wchar_pbump(&this->base, beg-cur_w+off);
3450 }else {
3451 off = -1;
3454 ret->off = off;
3455 return ret;
3458 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3459 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3460 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_seekpos, 36)
3461 fpos_int* __thiscall basic_stringbuf_short_seekpos(basic_stringbuf_wchar *this,
3462 fpos_int *ret, fpos_int pos, int mode)
3464 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
3466 if(pos.off==-1 && pos.pos==0 && pos.state==0) {
3467 *ret = pos;
3468 return ret;
3471 return basic_stringbuf_short_seekoff(this, ret, pos.pos+pos.off, SEEKDIR_beg, mode);
3474 /* ?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 */
3475 /* ?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 */
3476 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_str_set, 8)
3477 void __thiscall basic_stringbuf_short_str_set(basic_stringbuf_wchar *this, const basic_string_wchar *str)
3479 TRACE("(%p %p)\n", this, str);
3481 basic_stringbuf_short__Tidy(this);
3482 basic_stringbuf_short__Init(this, MSVCP_basic_string_wchar_c_str(str), str->size, this->state);
3485 /* ?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 */
3486 /* ?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 */
3487 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_str_get, 8)
3488 basic_string_wchar* __thiscall basic_stringbuf_short_str_get(const basic_stringbuf_wchar *this, basic_string_wchar *ret)
3490 wchar_t *ptr;
3492 TRACE("(%p)\n", this);
3494 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_wchar_pptr(&this->base)) {
3495 wchar_t *pptr;
3497 ptr = basic_streambuf_wchar_pbase(&this->base);
3498 pptr = basic_streambuf_wchar_pptr(&this->base);
3500 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
3503 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_wchar_gptr(&this->base)) {
3504 ptr = basic_streambuf_wchar_eback(&this->base);
3505 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, basic_streambuf_wchar_egptr(&this->base) - ptr);
3508 return MSVCP_basic_string_wchar_ctor(ret);
3511 /* ??0ios_base@std@@IAE@XZ */
3512 /* ??0ios_base@std@@IEAA@XZ */
3513 DEFINE_THISCALL_WRAPPER(ios_base_ctor, 4)
3514 ios_base* __thiscall ios_base_ctor(ios_base *this)
3516 TRACE("(%p)\n", this);
3517 this->vtable = &ios_base_vtable;
3518 locale_ctor_uninitialized(IOS_LOCALE(this), 0);
3519 return this;
3522 /* ??0ios_base@std@@QAE@ABV01@@Z */
3523 /* ??0ios_base@std@@QEAA@AEBV01@@Z */
3524 DEFINE_THISCALL_WRAPPER(ios_base_copy_ctor, 8)
3525 ios_base* __thiscall ios_base_copy_ctor(ios_base *this, const ios_base *copy)
3527 TRACE("(%p %p)\n", this, copy);
3528 *this = *copy;
3529 this->vtable = &ios_base_vtable;
3530 return this;
3533 /* ?_Callfns@ios_base@std@@AAEXW4event@12@@Z */
3534 /* ?_Callfns@ios_base@std@@AEAAXW4event@12@@Z */
3535 DEFINE_THISCALL_WRAPPER(ios_base_Callfns, 8)
3536 void __thiscall ios_base_Callfns(ios_base *this, IOS_BASE_event event)
3538 IOS_BASE_fnarray *cur;
3540 TRACE("(%p %x)\n", this, event);
3542 for(cur=this->calls; cur; cur=cur->next)
3543 cur->event_handler(event, this, cur->index);
3546 /* ?_Tidy@ios_base@std@@AAEXXZ */
3547 /* ?_Tidy@ios_base@std@@AEAAXXZ */
3548 DEFINE_THISCALL_WRAPPER(ios_base_Tidy, 4)
3549 void __thiscall ios_base_Tidy(ios_base *this)
3551 IOS_BASE_iosarray *arr_cur, *arr_next;
3552 IOS_BASE_fnarray *event_cur, *event_next;
3554 TRACE("(%p)\n", this);
3556 ios_base_Callfns(this, EVENT_erase_event);
3558 for(arr_cur=this->arr; arr_cur; arr_cur=arr_next) {
3559 arr_next = arr_cur->next;
3560 operator_delete(arr_cur);
3562 this->arr = NULL;
3564 for(event_cur=this->calls; event_cur; event_cur=event_next) {
3565 event_next = event_cur->next;
3566 operator_delete(event_cur);
3568 this->calls = NULL;
3571 /* ??1ios_base@std@@UAE@XZ */
3572 /* ??1ios_base@std@@UEAA@XZ */
3573 DEFINE_THISCALL_WRAPPER(ios_base_dtor, 4)
3574 void __thiscall ios_base_dtor(ios_base *this)
3576 TRACE("(%p)\n", this);
3577 locale_dtor(IOS_LOCALE(this));
3578 ios_base_Tidy(this);
3581 DEFINE_THISCALL_WRAPPER(ios_base_vector_dtor, 8)
3582 ios_base* __thiscall ios_base_vector_dtor(ios_base *this, unsigned int flags)
3584 TRACE("(%p %x)\n", this, flags);
3585 if(flags & 2) {
3586 /* we have an array, with the number of elements stored before the first object */
3587 INT_PTR i, *ptr = (INT_PTR *)this-1;
3589 for(i=*ptr-1; i>=0; i--)
3590 ios_base_dtor(this+i);
3591 operator_delete(ptr);
3592 } else {
3593 ios_base_dtor(this);
3594 if(flags & 1)
3595 operator_delete(this);
3598 return this;
3601 DEFINE_THISCALL_WRAPPER(iosb_vector_dtor, 8)
3602 void* __thiscall iosb_vector_dtor(void *this, unsigned int flags)
3604 TRACE("(%p %x)\n", this, flags);
3605 if(flags & 2) {
3606 INT_PTR *ptr = (INT_PTR *)this-1;
3607 operator_delete(ptr);
3608 } else {
3609 if(flags & 1)
3610 operator_delete(this);
3613 return this;
3616 /* ?_Findarr@ios_base@std@@AAEAAU_Iosarray@12@H@Z */
3617 /* ?_Findarr@ios_base@std@@AEAAAEAU_Iosarray@12@H@Z */
3618 DEFINE_THISCALL_WRAPPER(ios_base_Findarr, 8)
3619 IOS_BASE_iosarray* __thiscall ios_base_Findarr(ios_base *this, int index)
3621 IOS_BASE_iosarray *p;
3623 TRACE("(%p %d)\n", this, index);
3625 for(p=this->arr; p; p=p->next) {
3626 if(p->index == index)
3627 return p;
3630 for(p=this->arr; p; p=p->next) {
3631 if(!p->long_val && !p->ptr_val) {
3632 p->index = index;
3633 return p;
3637 p = operator_new(sizeof(IOS_BASE_iosarray));
3638 p->next = this->arr;
3639 p->index = index;
3640 p->long_val = 0;
3641 p->ptr_val = NULL;
3642 this->arr = p;
3643 return p;
3646 /* ?iword@ios_base@std@@QAEAAJH@Z */
3647 /* ?iword@ios_base@std@@QEAAAEAJH@Z */
3648 DEFINE_THISCALL_WRAPPER(ios_base_iword, 8)
3649 LONG* __thiscall ios_base_iword(ios_base *this, int index)
3651 TRACE("(%p %d)\n", this, index);
3652 return &ios_base_Findarr(this, index)->long_val;
3655 /* ?pword@ios_base@std@@QAEAAPAXH@Z */
3656 /* ?pword@ios_base@std@@QEAAAEAPEAXH@Z */
3657 DEFINE_THISCALL_WRAPPER(ios_base_pword, 8)
3658 void** __thiscall ios_base_pword(ios_base *this, int index)
3660 TRACE("(%p %d)\n", this, index);
3661 return &ios_base_Findarr(this, index)->ptr_val;
3664 /* ?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z */
3665 /* ?register_callback@ios_base@std@@QEAAXP6AXW4event@12@AEAV12@H@ZH@Z */
3666 DEFINE_THISCALL_WRAPPER(ios_base_register_callback, 12)
3667 void __thiscall ios_base_register_callback(ios_base *this, IOS_BASE_event_callback callback, int index)
3669 IOS_BASE_fnarray *event;
3671 TRACE("(%p %p %d)\n", this, callback, index);
3673 event = operator_new(sizeof(IOS_BASE_fnarray));
3674 event->next = this->calls;
3675 event->index = index;
3676 event->event_handler = callback;
3677 this->calls = event;
3680 /* ?clear@ios_base@std@@QAEXH_N@Z */
3681 /* ?clear@ios_base@std@@QEAAXH_N@Z */
3682 DEFINE_THISCALL_WRAPPER(ios_base_clear_reraise, 12)
3683 void __thiscall ios_base_clear_reraise(ios_base *this, IOSB_iostate state, bool reraise)
3685 TRACE("(%p %x %x)\n", this, state, reraise);
3687 this->state = state & IOSTATE_mask;
3688 if(!(this->state & this->except))
3689 return;
3691 if(reraise)
3692 _CxxThrowException(NULL, NULL);
3693 else if(this->state & this->except & IOSTATE_eofbit)
3694 throw_failure("eofbit is set");
3695 else if(this->state & this->except & IOSTATE_failbit)
3696 throw_failure("failbit is set");
3697 else if(this->state & this->except & IOSTATE_badbit)
3698 throw_failure("badbit is set");
3699 else if(this->state & this->except & IOSTATE__Hardfail)
3700 throw_failure("_Hardfail is set");
3703 /* ?clear@ios_base@std@@QAEXF@Z */
3704 /* ?clear@ios_base@std@@QEAAXF@Z */
3705 DEFINE_THISCALL_WRAPPER(ios_base_clear, 8)
3706 void __thiscall ios_base_clear(ios_base *this, IOSB_iostate state)
3708 ios_base_clear_reraise(this, state, FALSE);
3711 /* ?exceptions@ios_base@std@@QAEXH@Z */
3712 /* ?exceptions@ios_base@std@@QEAAXH@Z */
3713 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set, 8)
3714 void __thiscall ios_base_exceptions_set(ios_base *this, IOSB_iostate state)
3716 TRACE("(%p %x)\n", this, state);
3717 this->except = state & IOSTATE_mask;
3718 ios_base_clear(this, this->state);
3721 /* ?exceptions@ios_base@std@@QBEHXZ */
3722 /* ?exceptions@ios_base@std@@QEBAHXZ */
3723 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_get, 4)
3724 IOSB_iostate __thiscall ios_base_exceptions_get(ios_base *this)
3726 TRACE("(%p)\n", this);
3727 return this->except;
3730 /* ?copyfmt@ios_base@std@@QAEAAV12@ABV12@@Z */
3731 /* ?copyfmt@ios_base@std@@QEAAAEAV12@AEBV12@@Z */
3732 DEFINE_THISCALL_WRAPPER(ios_base_copyfmt, 8)
3733 ios_base* __thiscall ios_base_copyfmt(ios_base *this, const ios_base *rhs)
3735 TRACE("(%p %p)\n", this, rhs);
3737 if(this != rhs) {
3738 IOS_BASE_iosarray *arr_cur;
3739 IOS_BASE_fnarray *event_cur;
3741 ios_base_Tidy(this);
3743 for(arr_cur=rhs->arr; arr_cur; arr_cur=arr_cur->next) {
3744 if(arr_cur->long_val)
3745 *ios_base_iword(this, arr_cur->index) = arr_cur->long_val;
3746 if(arr_cur->ptr_val)
3747 *ios_base_pword(this, arr_cur->index) = arr_cur->ptr_val;
3749 this->stdstr = rhs->stdstr;
3750 this->fmtfl = rhs->fmtfl;
3751 this->prec = rhs->prec;
3752 this->wide = rhs->wide;
3753 locale_operator_assign(IOS_LOCALE(this), IOS_LOCALE(rhs));
3755 for(event_cur=rhs->calls; event_cur; event_cur=event_cur->next)
3756 ios_base_register_callback(this, event_cur->event_handler, event_cur->index);
3758 ios_base_Callfns(this, EVENT_copyfmt_event);
3759 ios_base_exceptions_set(this, rhs->except);
3762 return this;
3765 /* ??4ios_base@std@@QAEAAV01@ABV01@@Z */
3766 /* ??4ios_base@std@@QEAAAEAV01@AEBV01@@Z */
3767 DEFINE_THISCALL_WRAPPER(ios_base_assign, 8)
3768 ios_base* __thiscall ios_base_assign(ios_base *this, const ios_base *right)
3770 TRACE("(%p %p)\n", this, right);
3772 if(this != right) {
3773 this->state = right->state;
3774 ios_base_copyfmt(this, right);
3777 return this;
3780 /* ?fail@ios_base@std@@QBE_NXZ */
3781 /* ?fail@ios_base@std@@QEBA_NXZ */
3782 DEFINE_THISCALL_WRAPPER(ios_base_fail, 4)
3783 bool __thiscall ios_base_fail(const ios_base *this)
3785 TRACE("(%p)\n", this);
3786 return (this->state & (IOSTATE_failbit|IOSTATE_badbit)) != 0;
3789 /* ??7ios_base@std@@QBE_NXZ */
3790 /* ??7ios_base@std@@QEBA_NXZ */
3791 DEFINE_THISCALL_WRAPPER(ios_base_op_succ, 4)
3792 bool __thiscall ios_base_op_succ(const ios_base *this)
3794 TRACE("(%p)\n", this);
3795 return ios_base_fail(this);
3798 /* ??Bios_base@std@@QBEPAXXZ */
3799 /* ??Bios_base@std@@QEBAPEAXXZ */
3800 DEFINE_THISCALL_WRAPPER(ios_base_op_fail, 4)
3801 void* __thiscall ios_base_op_fail(const ios_base *this)
3803 TRACE("(%p)\n", this);
3804 return ios_base_fail(this) ? NULL : (void*)this;
3807 /* ?_Addstd@ios_base@std@@IAEXXZ */
3808 /* ?_Addstd@ios_base@std@@IEAAXXZ */
3809 DEFINE_THISCALL_WRAPPER(ios_base_Addstd, 4)
3810 void __thiscall ios_base_Addstd(ios_base *this)
3812 FIXME("(%p) stub\n", this);
3815 /* ?_Init@ios_base@std@@IAEXXZ */
3816 /* ?_Init@ios_base@std@@IEAAXXZ */
3817 DEFINE_THISCALL_WRAPPER(ios_base__Init, 4)
3818 void __thiscall ios_base__Init(ios_base *this)
3820 TRACE("(%p)\n", this);
3822 this->stdstr = 0;
3823 this->state = this->except = IOSTATE_goodbit;
3824 this->fmtfl = FMTFLAG_skipws | FMTFLAG_dec;
3825 this->prec = 6;
3826 this->wide = 0;
3827 this->arr = NULL;
3828 this->calls = NULL;
3829 locale_ctor(IOS_LOCALE(this));
3832 /* ?bad@ios_base@std@@QBE_NXZ */
3833 /* ?bad@ios_base@std@@QEBA_NXZ */
3834 DEFINE_THISCALL_WRAPPER(ios_base_bad, 4)
3835 bool __thiscall ios_base_bad(const ios_base *this)
3837 TRACE("(%p)\n", this);
3838 return (this->state & IOSTATE_badbit) != 0;
3841 /* ?eof@ios_base@std@@QBE_NXZ */
3842 /* ?eof@ios_base@std@@QEBA_NXZ */
3843 DEFINE_THISCALL_WRAPPER(ios_base_eof, 4)
3844 bool __thiscall ios_base_eof(const ios_base *this)
3846 TRACE("(%p)\n", this);
3847 return (this->state & IOSTATE_eofbit) != 0;
3850 /* ?flags@ios_base@std@@QAEHH@Z */
3851 /* ?flags@ios_base@std@@QEAAHH@Z */
3852 DEFINE_THISCALL_WRAPPER(ios_base_flags_set, 8)
3853 IOSB_fmtflags __thiscall ios_base_flags_set(ios_base *this, IOSB_fmtflags flags)
3855 IOSB_fmtflags ret = this->fmtfl;
3857 TRACE("(%p %x)\n", this, flags);
3859 this->fmtfl = flags & FMTFLAG_mask;
3860 return ret;
3863 /* ?flags@ios_base@std@@QBEHXZ */
3864 /* ?flags@ios_base@std@@QEBAHXZ */
3865 DEFINE_THISCALL_WRAPPER(ios_base_flags_get, 4)
3866 IOSB_fmtflags __thiscall ios_base_flags_get(const ios_base *this)
3868 TRACE("(%p)\n", this);
3869 return this->fmtfl;
3872 /* ?getloc@ios_base@std@@QBE?AVlocale@2@XZ */
3873 /* ?getloc@ios_base@std@@QEBA?AVlocale@2@XZ */
3874 DEFINE_THISCALL_WRAPPER(ios_base_getloc, 8)
3875 locale* __thiscall ios_base_getloc(const ios_base *this, locale *ret)
3877 TRACE("(%p)\n", this);
3878 return locale_copy_ctor(ret, IOS_LOCALE(this));
3881 /* ?good@ios_base@std@@QBE_NXZ */
3882 /* ?good@ios_base@std@@QEBA_NXZ */
3883 DEFINE_THISCALL_WRAPPER(ios_base_good, 4)
3884 bool __thiscall ios_base_good(const ios_base *this)
3886 TRACE("(%p)\n", this);
3887 return this->state == IOSTATE_goodbit;
3890 /* ?imbue@ios_base@std@@QAE?AVlocale@2@ABV32@@Z */
3891 /* ?imbue@ios_base@std@@QEAA?AVlocale@2@AEBV32@@Z */
3892 DEFINE_THISCALL_WRAPPER(ios_base_imbue, 12)
3893 locale* __thiscall ios_base_imbue(ios_base *this, locale *ret, const locale *loc)
3895 TRACE("(%p %p)\n", this, loc);
3896 *ret = *IOS_LOCALE(this);
3897 locale_copy_ctor(IOS_LOCALE(this), loc);
3898 return ret;
3901 /* ?precision@ios_base@std@@QAEHH@Z */
3902 /* ?precision@ios_base@std@@QEAA_J_J@Z */
3903 DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 8)
3904 streamsize __thiscall ios_base_precision_set(ios_base *this, streamsize precision)
3906 streamsize ret = this->prec;
3908 TRACE("(%p %Id)\n", this, precision);
3910 this->prec = precision;
3911 return ret;
3914 /* ?precision@ios_base@std@@QBEHXZ */
3915 /* ?precision@ios_base@std@@QEBA_JXZ */
3916 DEFINE_THISCALL_WRAPPER(ios_base_precision_get, 4)
3917 streamsize __thiscall ios_base_precision_get(const ios_base *this)
3919 TRACE("(%p)\n", this);
3920 return this->prec;
3923 /* ?rdstate@ios_base@std@@QBEHXZ */
3924 /* ?rdstate@ios_base@std@@QEBAHXZ */
3925 DEFINE_THISCALL_WRAPPER(ios_base_rdstate, 4)
3926 IOSB_iostate __thiscall ios_base_rdstate(const ios_base *this)
3928 TRACE("(%p)\n", this);
3929 return this->state;
3932 /* ?setf@ios_base@std@@QAEHHH@Z */
3933 /* ?setf@ios_base@std@@QEAAHHH@Z */
3934 DEFINE_THISCALL_WRAPPER(ios_base_setf_mask, 12)
3935 IOSB_fmtflags __thiscall ios_base_setf_mask(ios_base *this, IOSB_fmtflags flags, IOSB_fmtflags mask)
3937 IOSB_fmtflags ret = this->fmtfl;
3939 TRACE("(%p %x %x)\n", this, flags, mask);
3941 this->fmtfl = (this->fmtfl & (~mask)) | (flags & mask & FMTFLAG_mask);
3942 return ret;
3945 /* ?setf@ios_base@std@@QAEHH@Z */
3946 /* ?setf@ios_base@std@@QEAAHH@Z */
3947 DEFINE_THISCALL_WRAPPER(ios_base_setf, 8)
3948 IOSB_fmtflags __thiscall ios_base_setf(ios_base *this, IOSB_fmtflags flags)
3950 IOSB_fmtflags ret = this->fmtfl;
3952 TRACE("(%p %x)\n", this, flags);
3954 this->fmtfl |= flags & FMTFLAG_mask;
3955 return ret;
3958 /* ?setstate@ios_base@std@@QAEXH_N@Z */
3959 /* ?setstate@ios_base@std@@QEAAXH_N@Z */
3960 DEFINE_THISCALL_WRAPPER(ios_base_setstate_reraise, 12)
3961 void __thiscall ios_base_setstate_reraise(ios_base *this, IOSB_iostate state, bool reraise)
3963 TRACE("(%p %x %x)\n", this, state, reraise);
3965 if(state != IOSTATE_goodbit)
3966 ios_base_clear_reraise(this, this->state | state, reraise);
3969 /* ?setstate@ios_base@std@@QAEXH@Z */
3970 /* ?setstate@ios_base@std@@QEAAXH@Z */
3971 DEFINE_THISCALL_WRAPPER(ios_base_setstate, 8)
3972 void __thiscall ios_base_setstate(ios_base *this, IOSB_iostate state)
3974 ios_base_setstate_reraise(this, state, FALSE);
3977 /* ?sync_with_stdio@ios_base@std@@SA_N_N@Z */
3978 bool __cdecl ios_base_sync_with_stdio(bool sync)
3980 _Lockit lock;
3981 bool ret;
3983 TRACE("(%x)\n", sync);
3985 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
3986 ret = ios_base_Sync;
3987 ios_base_Sync = sync;
3988 _Lockit_dtor(&lock);
3989 return ret;
3992 /* ?unsetf@ios_base@std@@QAEXH@Z */
3993 /* ?unsetf@ios_base@std@@QEAAXH@Z */
3994 DEFINE_THISCALL_WRAPPER(ios_base_unsetf, 8)
3995 void __thiscall ios_base_unsetf(ios_base *this, IOSB_fmtflags flags)
3997 TRACE("(%p %x)\n", this, flags);
3998 this->fmtfl &= ~flags;
4001 /* ?width@ios_base@std@@QAEHH@Z */
4002 /* ?width@ios_base@std@@QEAA_J_J@Z */
4003 DEFINE_THISCALL_WRAPPER(ios_base_width_set, 8)
4004 streamsize __thiscall ios_base_width_set(ios_base *this, streamsize width)
4006 streamsize ret = this->wide;
4008 TRACE("(%p %Id)\n", this, width);
4010 this->wide = width;
4011 return ret;
4014 /* ?width@ios_base@std@@QBEHXZ */
4015 /* ?width@ios_base@std@@QEBA_JXZ */
4016 DEFINE_THISCALL_WRAPPER(ios_base_width_get, 4)
4017 streamsize __thiscall ios_base_width_get(ios_base *this)
4019 TRACE("(%p)\n", this);
4020 return this->wide;
4023 /* ?xalloc@ios_base@std@@SAHXZ */
4024 int __cdecl ios_base_xalloc(void)
4026 _Lockit lock;
4027 int ret;
4029 TRACE("\n");
4031 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
4032 ret = ios_base_Index++;
4033 _Lockit_dtor(&lock);
4034 return ret;
4037 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ */
4038 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ */
4039 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor, 4)
4040 basic_ios_char* __thiscall basic_ios_char_ctor(basic_ios_char *this)
4042 TRACE("(%p)\n", this);
4044 ios_base_ctor(&this->base);
4045 this->base.vtable = &basic_ios_char_vtable;
4046 return this;
4049 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IAEXPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
4050 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
4051 DEFINE_THISCALL_WRAPPER(basic_ios_char_init, 12)
4052 void __thiscall basic_ios_char_init(basic_ios_char *this, basic_streambuf_char *streambuf, bool isstd)
4054 TRACE("(%p %p %x)\n", this, streambuf, isstd);
4055 ios_base__Init(&this->base);
4056 this->strbuf = streambuf;
4057 this->stream = NULL;
4058 this->fillch = ' ';
4060 if(!streambuf)
4061 ios_base_setstate(&this->base, IOSTATE_badbit);
4063 if(isstd)
4064 FIXME("standard streams not handled yet\n");
4067 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
4068 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
4069 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor_streambuf, 8)
4070 basic_ios_char* __thiscall basic_ios_char_ctor_streambuf(basic_ios_char *this, basic_streambuf_char *strbuf)
4072 TRACE("(%p %p)\n", this, strbuf);
4074 basic_ios_char_ctor(this);
4075 basic_ios_char_init(this, strbuf, FALSE);
4076 return this;
4079 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ */
4080 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ */
4081 DEFINE_THISCALL_WRAPPER(basic_ios_char_dtor, 4)
4082 void __thiscall basic_ios_char_dtor(basic_ios_char *this)
4084 TRACE("(%p)\n", this);
4085 ios_base_dtor(&this->base);
4088 DEFINE_THISCALL_WRAPPER(basic_ios_char_vector_dtor, 8)
4089 basic_ios_char* __thiscall basic_ios_char_vector_dtor(basic_ios_char *this, unsigned int flags)
4091 TRACE("(%p %x)\n", this, flags);
4092 if(flags & 2) {
4093 /* we have an array, with the number of elements stored before the first object */
4094 INT_PTR i, *ptr = (INT_PTR *)this-1;
4096 for(i=*ptr-1; i>=0; i--)
4097 basic_ios_char_dtor(this+i);
4098 operator_delete(ptr);
4099 } else {
4100 basic_ios_char_dtor(this);
4101 if(flags & 1)
4102 operator_delete(this);
4105 return this;
4108 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
4109 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
4110 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear_reraise, 12)
4111 void __thiscall basic_ios_char_clear_reraise(basic_ios_char *this, IOSB_iostate state, bool reraise)
4113 TRACE("(%p %x %x)\n", this, state, reraise);
4114 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
4117 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
4118 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
4119 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear, 8)
4120 void __thiscall basic_ios_char_clear(basic_ios_char *this, unsigned int state)
4122 basic_ios_char_clear_reraise(this, (IOSB_iostate)state, FALSE);
4125 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEAAV12@ABV12@@Z */
4126 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEBV12@@Z */
4127 DEFINE_THISCALL_WRAPPER(basic_ios_char_copyfmt, 8)
4128 basic_ios_char* __thiscall basic_ios_char_copyfmt(basic_ios_char *this, basic_ios_char *copy)
4130 TRACE("(%p %p)\n", this, copy);
4131 if(this == copy)
4132 return this;
4134 this->stream = copy->stream;
4135 this->fillch = copy->fillch;
4136 ios_base_copyfmt(&this->base, &copy->base);
4137 return this;
4140 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEDD@Z */
4141 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAADD@Z */
4142 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_set, 8)
4143 char __thiscall basic_ios_char_fill_set(basic_ios_char *this, char fill)
4145 char ret = this->fillch;
4147 TRACE("(%p %c)\n", this, fill);
4149 this->fillch = fill;
4150 return ret;
4153 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ */
4154 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ */
4155 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_get, 4)
4156 char __thiscall basic_ios_char_fill_get(basic_ios_char *this)
4158 TRACE("(%p)\n", this);
4159 return this->fillch;
4162 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
4163 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
4164 DEFINE_THISCALL_WRAPPER(basic_ios_char_imbue, 12)
4165 locale *__thiscall basic_ios_char_imbue(basic_ios_char *this, locale *ret, const locale *loc)
4167 TRACE("(%p %p %p)\n", this, ret, loc);
4169 if(this->strbuf) {
4170 basic_streambuf_char_pubimbue(this->strbuf, ret, loc);
4171 locale_dtor(ret);
4174 return ios_base_imbue(&this->base, ret, loc);
4177 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDDD@Z */
4178 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADDD@Z */
4179 DEFINE_THISCALL_WRAPPER(basic_ios_char_narrow, 12)
4180 char __thiscall basic_ios_char_narrow(basic_ios_char *this, char ch, char def)
4182 TRACE("(%p %c %c)\n", this, ch, def);
4183 return ctype_char_narrow_ch(ctype_char_use_facet(IOS_LOCALE(this->strbuf)), ch, def);
4186 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PAV32@@Z */
4187 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAV32@@Z */
4188 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_set, 8)
4189 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_set(basic_ios_char *this, basic_streambuf_char *streambuf)
4191 basic_streambuf_char *ret = this->strbuf;
4193 TRACE("(%p %p)\n", this, streambuf);
4195 this->strbuf = streambuf;
4196 basic_ios_char_clear(this, IOSTATE_goodbit);
4197 return ret;
4200 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
4201 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
4202 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_get, 4)
4203 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_get(const basic_ios_char *this)
4205 TRACE("(%p)\n", this);
4206 return this->strbuf;
4209 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
4210 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
4211 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate_reraise, 12)
4212 void __thiscall basic_ios_char_setstate_reraise(basic_ios_char *this, IOSB_iostate state, bool reraise)
4214 TRACE("(%p %x %x)\n", this, state, reraise);
4216 if(state != IOSTATE_goodbit)
4217 basic_ios_char_clear_reraise(this, this->base.state | state, reraise);
4220 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
4221 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
4222 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate, 8)
4223 void __thiscall basic_ios_char_setstate(basic_ios_char *this, unsigned int state)
4225 basic_ios_char_setstate_reraise(this, (IOSB_iostate)state, FALSE);
4228 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@PAV32@@Z */
4229 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@PEAV32@@Z */
4230 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_set, 8)
4231 basic_ostream_char* __thiscall basic_ios_char_tie_set(basic_ios_char *this, basic_ostream_char *ostream)
4233 basic_ostream_char *ret = this->stream;
4235 TRACE("(%p %p)\n", this, ostream);
4237 this->stream = ostream;
4238 return ret;
4241 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
4242 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
4243 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_get, 4)
4244 basic_ostream_char* __thiscall basic_ios_char_tie_get(const basic_ios_char *this)
4246 TRACE("(%p)\n", this);
4247 return this->stream;
4250 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z */
4251 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z */
4252 DEFINE_THISCALL_WRAPPER(basic_ios_char_widen, 8)
4253 char __thiscall basic_ios_char_widen(basic_ios_char *this, char ch)
4255 TRACE("(%p %c)\n", this, ch);
4256 return ctype_char_widen_ch(ctype_char_use_facet(IOS_LOCALE(this->strbuf)), ch);
4259 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IAE@XZ */
4260 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IEAA@XZ */
4261 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor, 4)
4262 basic_ios_wchar* __thiscall basic_ios_short_ctor(basic_ios_wchar *this)
4264 TRACE("(%p)\n", this);
4266 ios_base_ctor(&this->base);
4267 this->base.vtable = &basic_ios_short_vtable;
4268 return this;
4271 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IAEXPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
4272 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
4273 DEFINE_THISCALL_WRAPPER(basic_ios_short_init, 12)
4274 void __thiscall basic_ios_short_init(basic_ios_wchar *this, basic_streambuf_wchar *streambuf, bool isstd)
4276 TRACE("(%p %p %x)\n", this, streambuf, isstd);
4277 ios_base__Init(&this->base);
4278 this->strbuf = streambuf;
4279 this->stream = NULL;
4280 this->fillch = ' ';
4282 if(!streambuf)
4283 ios_base_setstate(&this->base, IOSTATE_badbit);
4285 if(isstd)
4286 FIXME("standard streams not handled yet\n");
4289 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
4290 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
4291 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor_streambuf, 8)
4292 basic_ios_wchar* __thiscall basic_ios_short_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
4294 TRACE("(%p %p)\n", this, strbuf);
4296 basic_ios_short_ctor(this);
4297 basic_ios_short_init(this, strbuf, FALSE);
4298 return this;
4301 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UAE@XZ */
4302 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UEAA@XZ */
4303 DEFINE_THISCALL_WRAPPER(basic_ios_short_dtor, 4)
4304 void __thiscall basic_ios_short_dtor(basic_ios_wchar *this)
4306 TRACE("(%p)\n", this);
4307 ios_base_dtor(&this->base);
4310 DEFINE_THISCALL_WRAPPER(basic_ios_short_vector_dtor, 8)
4311 basic_ios_wchar* __thiscall basic_ios_short_vector_dtor(basic_ios_wchar *this, unsigned int flags)
4313 TRACE("(%p %x)\n", this, flags);
4314 if(flags & 2) {
4315 /* we have an array, with the number of elements stored before the first object */
4316 INT_PTR i, *ptr = (INT_PTR *)this-1;
4318 for(i=*ptr-1; i>=0; i--)
4319 basic_ios_short_dtor(this+i);
4320 operator_delete(ptr);
4321 } else {
4322 basic_ios_short_dtor(this);
4323 if(flags & 1)
4324 operator_delete(this);
4327 return this;
4330 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
4331 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
4332 DEFINE_THISCALL_WRAPPER(basic_ios_short_clear_reraise, 12)
4333 void __thiscall basic_ios_short_clear_reraise(basic_ios_wchar *this, IOSB_iostate state, bool reraise)
4335 TRACE("(%p %x %x)\n", this, state, reraise);
4336 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
4339 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
4340 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
4341 DEFINE_THISCALL_WRAPPER(basic_ios_short_clear, 8)
4342 void __thiscall basic_ios_short_clear(basic_ios_wchar *this, unsigned int state)
4344 basic_ios_short_clear_reraise(this, (IOSB_iostate)state, FALSE);
4347 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEAAV12@ABV12@@Z */
4348 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEBV12@@Z */
4349 DEFINE_THISCALL_WRAPPER(basic_ios_short_copyfmt, 8)
4350 basic_ios_wchar* __thiscall basic_ios_short_copyfmt(basic_ios_wchar *this, basic_ios_wchar *copy)
4352 TRACE("(%p %p)\n", this, copy);
4353 if(this == copy)
4354 return this;
4356 this->stream = copy->stream;
4357 this->fillch = copy->fillch;
4358 ios_base_copyfmt(&this->base, &copy->base);
4359 return this;
4362 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEGG@Z */
4363 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
4364 DEFINE_THISCALL_WRAPPER(basic_ios_short_fill_set, 8)
4365 wchar_t __thiscall basic_ios_short_fill_set(basic_ios_wchar *this, wchar_t fill)
4367 wchar_t ret = this->fillch;
4369 TRACE("(%p %c)\n", this, fill);
4371 this->fillch = fill;
4372 return ret;
4375 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGXZ */
4376 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGXZ */
4377 DEFINE_THISCALL_WRAPPER(basic_ios_short_fill_get, 4)
4378 wchar_t __thiscall basic_ios_short_fill_get(basic_ios_wchar *this)
4380 TRACE("(%p)\n", this);
4381 return this->fillch;
4384 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
4385 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
4386 DEFINE_THISCALL_WRAPPER(basic_ios_short_imbue, 12)
4387 locale *__thiscall basic_ios_short_imbue(basic_ios_wchar *this, locale *ret, const locale *loc)
4389 TRACE("(%p %p %p)\n", this, ret, loc);
4391 if(this->strbuf) {
4392 basic_streambuf_wchar_pubimbue(this->strbuf, ret, loc);
4393 locale_dtor(ret);
4396 return ios_base_imbue(&this->base, ret, loc);
4399 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEDGD@Z */
4400 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBADGD@Z */
4401 DEFINE_THISCALL_WRAPPER(basic_ios_short_narrow, 12)
4402 char __thiscall basic_ios_short_narrow(basic_ios_wchar *this, wchar_t ch, char def)
4404 TRACE("(%p %c %c)\n", this, ch, def);
4405 return ctype_wchar_narrow_ch(ctype_wchar_use_facet(IOS_LOCALE(this->strbuf)), ch, def);
4408 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAV32@@Z */
4409 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAV32@@Z */
4410 DEFINE_THISCALL_WRAPPER(basic_ios_short_rdbuf_set, 8)
4411 basic_streambuf_wchar* __thiscall basic_ios_short_rdbuf_set(basic_ios_wchar *this, basic_streambuf_wchar *streambuf)
4413 basic_streambuf_wchar *ret = this->strbuf;
4415 TRACE("(%p %p)\n", this, streambuf);
4417 this->strbuf = streambuf;
4418 basic_ios_short_clear(this, IOSTATE_goodbit);
4419 return ret;
4422 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
4423 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
4424 DEFINE_THISCALL_WRAPPER(basic_ios_short_rdbuf_get, 4)
4425 basic_streambuf_wchar* __thiscall basic_ios_short_rdbuf_get(const basic_ios_wchar *this)
4427 TRACE("(%p)\n", this);
4428 return this->strbuf;
4431 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
4432 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
4433 DEFINE_THISCALL_WRAPPER(basic_ios_short_setstate_reraise, 12)
4434 void __thiscall basic_ios_short_setstate_reraise(basic_ios_wchar *this, IOSB_iostate state, bool reraise)
4436 TRACE("(%p %x %x)\n", this, state, reraise);
4438 if(state != IOSTATE_goodbit)
4439 basic_ios_short_clear_reraise(this, this->base.state | state, reraise);
4442 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
4443 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
4444 DEFINE_THISCALL_WRAPPER(basic_ios_short_setstate, 8)
4445 void __thiscall basic_ios_short_setstate(basic_ios_wchar *this, IOSB_iostate state)
4447 basic_ios_short_setstate_reraise(this, state, FALSE);
4450 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@PAV32@@Z */
4451 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@PEAV32@@Z */
4452 DEFINE_THISCALL_WRAPPER(basic_ios_short_tie_set, 8)
4453 basic_ostream_wchar* __thiscall basic_ios_short_tie_set(basic_ios_wchar *this, basic_ostream_wchar *ostream)
4455 basic_ostream_wchar *ret = this->stream;
4457 TRACE("(%p %p)\n", this, ostream);
4459 this->stream = ostream;
4460 return ret;
4463 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
4464 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
4465 DEFINE_THISCALL_WRAPPER(basic_ios_short_tie_get, 4)
4466 basic_ostream_wchar* __thiscall basic_ios_short_tie_get(const basic_ios_wchar *this)
4468 TRACE("(%p)\n", this);
4469 return this->stream;
4472 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGD@Z */
4473 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGD@Z */
4474 DEFINE_THISCALL_WRAPPER(basic_ios_short_widen, 8)
4475 wchar_t __thiscall basic_ios_short_widen(basic_ios_wchar *this, char ch)
4477 TRACE("(%p %c)\n", this, ch);
4478 return ctype_wchar_widen_ch(ctype_wchar_use_facet(IOS_LOCALE(this->strbuf)), ch);
4481 /* Caution: basic_ostream uses virtual inheritance.
4482 * All constructors have additional parameter that says if base class should be initialized.
4483 * Base class needs to be accessed using vbtable.
4485 static inline basic_ios_char* basic_ostream_char_get_basic_ios(basic_ostream_char *this)
4487 return (basic_ios_char*)((char*)this+this->vbtable[1]);
4490 static inline basic_ios_char* basic_ostream_char_to_basic_ios(basic_ostream_char *ptr)
4492 return (basic_ios_char*)((char*)ptr+basic_ostream_char_vbtable[1]);
4495 static inline basic_ostream_char* basic_ostream_char_from_basic_ios(basic_ios_char *ptr)
4497 return (basic_ostream_char*)((char*)ptr-basic_ostream_char_vbtable[1]);
4500 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
4501 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
4502 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor, 20)
4503 basic_ostream_char* __thiscall basic_ostream_char_ctor(basic_ostream_char *this,
4504 basic_streambuf_char *strbuf, bool isstd, bool init, bool virt_init)
4506 basic_ios_char *base;
4508 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, init, virt_init);
4510 if(virt_init) {
4511 this->vbtable = basic_ostream_char_vbtable;
4512 base = basic_ostream_char_get_basic_ios(this);
4513 basic_ios_char_ctor(base);
4514 }else {
4515 base = basic_ostream_char_get_basic_ios(this);
4518 base->base.vtable = &basic_ostream_char_vtable;
4519 if(init)
4520 basic_ios_char_init(base, strbuf, isstd);
4521 return this;
4524 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
4525 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
4526 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor_uninitialized, 12)
4527 basic_ostream_char* __thiscall basic_ostream_char_ctor_uninitialized(basic_ostream_char *this,
4528 int uninitialized, bool virt_init)
4530 basic_ios_char *base;
4532 TRACE("(%p %d)\n", this, uninitialized);
4534 if(virt_init) {
4535 this->vbtable = basic_ostream_char_vbtable;
4536 base = basic_ostream_char_get_basic_ios(this);
4537 basic_ios_char_ctor(base);
4538 }else {
4539 base = basic_ostream_char_get_basic_ios(this);
4542 base->base.vtable = &basic_ostream_char_vtable;
4543 ios_base_Addstd(&base->base);
4544 return this;
4547 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
4548 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
4549 DEFINE_THISCALL_WRAPPER(basic_ostream_char_dtor, 4)
4550 void __thiscall basic_ostream_char_dtor(basic_ios_char *base)
4552 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
4554 /* don't destroy virtual base here */
4555 TRACE("(%p)\n", this);
4558 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
4559 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
4560 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vbase_dtor, 4)
4561 void __thiscall basic_ostream_char_vbase_dtor(basic_ostream_char *this)
4563 TRACE("(%p)\n", this);
4564 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(this));
4565 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(this));
4568 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vector_dtor, 8)
4569 basic_ostream_char* __thiscall basic_ostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
4571 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
4573 TRACE("(%p %x)\n", this, flags);
4575 if(flags & 2) {
4576 /* we have an array, with the number of elements stored before the first object */
4577 INT_PTR i, *ptr = (INT_PTR *)this-1;
4579 for(i=*ptr-1; i>=0; i--)
4580 basic_ostream_char_vbase_dtor(this+i);
4581 operator_delete(ptr);
4582 } else {
4583 basic_ostream_char_vbase_dtor(this);
4584 if(flags & 1)
4585 operator_delete(this);
4588 return this;
4591 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
4592 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
4593 DEFINE_THISCALL_WRAPPER(basic_ostream_char_flush, 4)
4594 basic_ostream_char* __thiscall basic_ostream_char_flush(basic_ostream_char *this)
4596 /* this function is not matching C++ specification */
4597 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4599 TRACE("(%p)\n", this);
4601 if(basic_ios_char_rdbuf_get(base) && ios_base_good(&base->base)
4602 && basic_streambuf_char_pubsync(basic_ios_char_rdbuf_get(base))==-1)
4603 basic_ios_char_setstate(base, IOSTATE_badbit);
4604 return this;
4607 /* ?flush@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
4608 /* ?flush@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
4609 basic_ostream_char* __cdecl flush_ostream_char(basic_ostream_char *ostream)
4611 return basic_ostream_char_flush(ostream);
4614 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
4615 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
4616 DEFINE_THISCALL_WRAPPER(basic_ostream_char_osfx, 4)
4617 void __thiscall basic_ostream_char_osfx(basic_ostream_char *this)
4619 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4621 TRACE("(%p)\n", this);
4623 if(base->base.fmtfl & FMTFLAG_unitbuf)
4624 basic_ostream_char_flush(this);
4627 static BOOL basic_ostream_char_sentry_create(basic_ostream_char *ostr)
4629 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
4631 if(ios_base_good(&base->base) && base->stream)
4632 basic_ostream_char_flush(base->stream);
4634 return ios_base_good(&base->base);
4637 static void basic_ostream_char_sentry_destroy(basic_ostream_char *ostr)
4639 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
4641 if(ios_base_good(&base->base) && !__uncaught_exception())
4642 basic_ostream_char_osfx(ostr);
4645 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE_NXZ */
4646 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA_NXZ */
4647 DEFINE_THISCALL_WRAPPER(basic_ostream_char_opfx, 4)
4648 bool __thiscall basic_ostream_char_opfx(basic_ostream_char *this)
4650 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4652 TRACE("(%p)\n", this);
4654 if(ios_base_good(&base->base) && base->stream)
4655 basic_ostream_char_flush(base->stream);
4656 return ios_base_good(&base->base);
4659 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
4660 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
4661 DEFINE_THISCALL_WRAPPER(basic_ostream_char_put, 8)
4662 basic_ostream_char* __thiscall basic_ostream_char_put(basic_ostream_char *this, char ch)
4664 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4666 TRACE("(%p %c)\n", this, ch);
4668 if(!basic_ostream_char_sentry_create(this)
4669 || basic_streambuf_char_sputc(base->strbuf, ch)==EOF) {
4670 basic_ostream_char_sentry_destroy(this);
4671 basic_ios_char_setstate(base, IOSTATE_badbit);
4672 return this;
4675 basic_ostream_char_sentry_destroy(this);
4676 return this;
4679 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
4680 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
4681 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 12)
4682 basic_ostream_char* __thiscall basic_ostream_char_seekp(basic_ostream_char *this, streamoff off, int way)
4684 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4686 TRACE("(%p %Id %d)\n", this, off, way);
4688 if(!ios_base_fail(&base->base)) {
4689 fpos_int seek;
4691 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
4692 &seek, off, way, OPENMODE_out);
4693 if(seek.off==-1 && seek.pos==0 && seek.state==0)
4694 basic_ios_char_setstate(base, IOSTATE_failbit);
4696 return this;
4699 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
4700 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
4701 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp_fpos, 28)
4702 basic_ostream_char* __thiscall basic_ostream_char_seekp_fpos(basic_ostream_char *this, fpos_int pos)
4704 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4706 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
4708 if(!ios_base_fail(&base->base)) {
4709 fpos_int seek;
4711 basic_streambuf_char_pubseekpos(basic_ios_char_rdbuf_get(base),
4712 &seek, pos, OPENMODE_out);
4713 if(seek.off==-1 && seek.pos==0 && seek.state==0)
4714 basic_ios_char_setstate(base, IOSTATE_failbit);
4716 return this;
4719 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
4720 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
4721 DEFINE_THISCALL_WRAPPER(basic_ostream_char_tellp, 8)
4722 fpos_int* __thiscall basic_ostream_char_tellp(basic_ostream_char *this, fpos_int *ret)
4724 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4726 TRACE("(%p)\n", this);
4728 if(!ios_base_fail(&base->base)) {
4729 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
4730 ret, 0, SEEKDIR_cur, OPENMODE_out);
4731 }else {
4732 ret->off = -1;
4733 ret->pos = 0;
4734 ret->state = 0;
4736 return ret;
4739 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@PBDH@Z */
4740 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEBD_J@Z */
4741 DEFINE_THISCALL_WRAPPER(basic_ostream_char_write, 12)
4742 basic_ostream_char* __thiscall basic_ostream_char_write(basic_ostream_char *this, const char *str, streamsize count)
4744 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4746 TRACE("(%p %s %Id)\n", this, debugstr_a(str), count);
4748 if(!basic_ostream_char_sentry_create(this)
4749 || basic_streambuf_char_sputn(base->strbuf, str, count)!=count) {
4750 basic_ostream_char_sentry_destroy(this);
4751 basic_ios_char_setstate(base, IOSTATE_badbit);
4752 return this;
4755 basic_ostream_char_sentry_destroy(this);
4756 return this;
4759 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@F@Z */
4760 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@F@Z */
4761 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_short, 8)
4762 basic_ostream_char* __thiscall basic_ostream_char_print_short(basic_ostream_char *this, short val)
4764 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4765 int state = IOSTATE_goodbit;
4767 TRACE("(%p %d)\n", this, val);
4769 if(basic_ostream_char_sentry_create(this)) {
4770 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4771 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
4772 ostreambuf_iterator_char dest;
4774 memset(&dest, 0, sizeof(dest));
4775 dest.strbuf = strbuf;
4776 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base),
4777 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
4778 ? (LONG)((unsigned short)val) : (LONG)val);
4780 basic_ostream_char_sentry_destroy(this);
4782 basic_ios_char_setstate(base, state);
4783 return this;
4786 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@G@Z */
4787 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@G@Z */
4788 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ushort, 8)
4789 basic_ostream_char* __thiscall basic_ostream_char_print_ushort(basic_ostream_char *this, unsigned short val)
4791 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4792 int state = IOSTATE_goodbit;
4794 TRACE("(%p %u)\n", this, val);
4796 if(basic_ostream_char_sentry_create(this)) {
4797 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4798 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
4799 ostreambuf_iterator_char dest;
4801 memset(&dest, 0, sizeof(dest));
4802 dest.strbuf = strbuf;
4803 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
4805 basic_ostream_char_sentry_destroy(this);
4807 basic_ios_char_setstate(base, state);
4808 return this;
4811 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z */
4812 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z */
4813 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@J@Z */
4814 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@J@Z */
4815 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int, 8)
4816 basic_ostream_char* __thiscall basic_ostream_char_print_int(basic_ostream_char *this, int val)
4818 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4819 int state = IOSTATE_goodbit;
4821 TRACE("(%p %d)\n", this, val);
4823 if(basic_ostream_char_sentry_create(this)) {
4824 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4825 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
4826 ostreambuf_iterator_char dest;
4828 memset(&dest, 0, sizeof(dest));
4829 dest.strbuf = strbuf;
4830 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
4832 basic_ostream_char_sentry_destroy(this);
4834 basic_ios_char_setstate(base, state);
4835 return this;
4838 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@I@Z */
4839 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@I@Z */
4840 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@K@Z */
4841 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z */
4842 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint, 8)
4843 basic_ostream_char* __thiscall basic_ostream_char_print_uint(basic_ostream_char *this, unsigned int val)
4845 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4846 int state = IOSTATE_goodbit;
4848 TRACE("(%p %u)\n", this, val);
4850 if(basic_ostream_char_sentry_create(this)) {
4851 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4852 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
4853 ostreambuf_iterator_char dest;
4855 memset(&dest, 0, sizeof(dest));
4856 dest.strbuf = strbuf;
4857 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
4859 basic_ostream_char_sentry_destroy(this);
4861 basic_ios_char_setstate(base, state);
4862 return this;
4865 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@M@Z */
4866 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@M@Z */
4867 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_float, 8)
4868 basic_ostream_char* __thiscall basic_ostream_char_print_float(basic_ostream_char *this, float val)
4870 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4871 int state = IOSTATE_goodbit;
4873 TRACE("(%p %f)\n", this, val);
4875 if(basic_ostream_char_sentry_create(this)) {
4876 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4877 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
4878 ostreambuf_iterator_char dest;
4880 memset(&dest, 0, sizeof(dest));
4881 dest.strbuf = strbuf;
4882 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
4884 basic_ostream_char_sentry_destroy(this);
4886 basic_ios_char_setstate(base, state);
4887 return this;
4890 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@N@Z */
4891 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@N@Z */
4892 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_double, 12)
4893 basic_ostream_char* __thiscall basic_ostream_char_print_double(basic_ostream_char *this, double val)
4895 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4896 int state = IOSTATE_goodbit;
4898 TRACE("(%p %lf)\n", this, val);
4900 if(basic_ostream_char_sentry_create(this)) {
4901 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4902 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
4903 ostreambuf_iterator_char dest;
4905 memset(&dest, 0, sizeof(dest));
4906 dest.strbuf = strbuf;
4907 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
4909 basic_ostream_char_sentry_destroy(this);
4911 basic_ios_char_setstate(base, state);
4912 return this;
4915 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@O@Z */
4916 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@O@Z */
4917 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ldouble, 12)
4918 basic_ostream_char* __thiscall basic_ostream_char_print_ldouble(basic_ostream_char *this, double val)
4920 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4921 int state = IOSTATE_goodbit;
4923 TRACE("(%p %lf)\n", this, val);
4925 if(basic_ostream_char_sentry_create(this)) {
4926 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4927 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
4928 ostreambuf_iterator_char dest;
4930 memset(&dest, 0, sizeof(dest));
4931 dest.strbuf = strbuf;
4932 num_put_char_put_ldouble(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
4934 basic_ostream_char_sentry_destroy(this);
4936 basic_ios_char_setstate(base, state);
4937 return this;
4940 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
4941 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
4942 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_streambuf, 8)
4943 basic_ostream_char* __thiscall basic_ostream_char_print_streambuf(basic_ostream_char *this, basic_streambuf_char *val)
4945 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4946 IOSB_iostate state = IOSTATE_badbit;
4947 int c = '\n';
4949 TRACE("(%p %p)\n", this, val);
4951 if(basic_ostream_char_sentry_create(this)) {
4952 for(c = basic_streambuf_char_sgetc(val); c!=EOF;
4953 c = basic_streambuf_char_snextc(val)) {
4954 state = IOSTATE_goodbit;
4956 if(basic_streambuf_char_sputc(base->strbuf, c) == EOF) {
4957 state = IOSTATE_badbit;
4958 break;
4961 }else {
4962 state = IOSTATE_badbit;
4964 basic_ostream_char_sentry_destroy(this);
4966 ios_base_width_set(&base->base, 0);
4967 basic_ios_char_setstate(base, state);
4968 return this;
4971 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PBX@Z */
4972 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEBX@Z */
4973 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ptr, 8)
4974 basic_ostream_char* __thiscall basic_ostream_char_print_ptr(basic_ostream_char *this, const void *val)
4976 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4977 int state = IOSTATE_goodbit;
4979 TRACE("(%p %p)\n", this, val);
4981 if(basic_ostream_char_sentry_create(this)) {
4982 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4983 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
4984 ostreambuf_iterator_char dest;
4986 memset(&dest, 0, sizeof(dest));
4987 dest.strbuf = strbuf;
4988 num_put_char_put_ptr(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
4990 basic_ostream_char_sentry_destroy(this);
4992 basic_ios_char_setstate(base, state);
4993 return this;
4996 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_J@Z */
4997 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_J@Z */
4998 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int64, 12)
4999 basic_ostream_char* __thiscall basic_ostream_char_print_int64(basic_ostream_char *this, __int64 val)
5001 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5002 int state = IOSTATE_goodbit;
5004 TRACE("(%p)\n", this);
5006 if(basic_ostream_char_sentry_create(this)) {
5007 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5008 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
5009 ostreambuf_iterator_char dest;
5011 memset(&dest, 0, sizeof(dest));
5012 dest.strbuf = strbuf;
5013 num_put_char_put_int64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5015 basic_ostream_char_sentry_destroy(this);
5017 basic_ios_char_setstate(base, state);
5018 return this;
5021 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_K@Z */
5022 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z */
5023 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint64, 12)
5024 basic_ostream_char* __thiscall basic_ostream_char_print_uint64(basic_ostream_char *this, unsigned __int64 val)
5026 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5027 int state = IOSTATE_goodbit;
5029 TRACE("(%p)\n", this);
5031 if(basic_ostream_char_sentry_create(this)) {
5032 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5033 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
5034 ostreambuf_iterator_char dest;
5036 memset(&dest, 0, sizeof(dest));
5037 dest.strbuf = strbuf;
5038 num_put_char_put_uint64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5040 basic_ostream_char_sentry_destroy(this);
5042 basic_ios_char_setstate(base, state);
5043 return this;
5046 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_N@Z */
5047 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_N@Z */
5048 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_bool, 8)
5049 basic_ostream_char* __thiscall basic_ostream_char_print_bool(basic_ostream_char *this, bool val)
5051 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5052 int state = IOSTATE_goodbit;
5054 TRACE("(%p %x)\n", this, val);
5056 if(basic_ostream_char_sentry_create(this)) {
5057 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5058 const num_put *numput = num_put_char_use_facet(IOS_LOCALE(strbuf));
5059 ostreambuf_iterator_char dest;
5061 memset(&dest, 0, sizeof(dest));
5062 dest.strbuf = strbuf;
5063 num_put_char_put_bool(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5065 basic_ostream_char_sentry_destroy(this);
5067 basic_ios_char_setstate(base, state);
5068 return this;
5071 /* ?ends@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
5072 /* ?ends@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
5073 basic_ostream_char* __cdecl basic_ostream_char_ends(basic_ostream_char *ostr)
5075 TRACE("(%p)\n", ostr);
5077 basic_ostream_char_put(ostr, 0);
5078 return ostr;
5081 /* ?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
5082 /* ?endl@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
5083 basic_ostream_char* __cdecl basic_ostream_char_endl(basic_ostream_char *ostr)
5085 TRACE("(%p)\n", ostr);
5087 basic_ostream_char_put(ostr, '\n');
5088 basic_ostream_char_flush(ostr);
5089 return ostr;
5092 /* ??$?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 */
5093 /* ??$?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 */
5094 basic_ostream_char* __cdecl basic_ostream_char_print_bstr(basic_ostream_char *ostr, const basic_string_char *str)
5096 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5097 IOSB_iostate state = IOSTATE_goodbit;
5099 TRACE("(%p %p)\n", ostr, str);
5101 if(basic_ostream_char_sentry_create(ostr)) {
5102 size_t len = MSVCP_basic_string_char_length(str);
5103 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
5105 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
5106 for(; pad!=0; pad--) {
5107 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5108 state = IOSTATE_badbit;
5109 break;
5114 if(state == IOSTATE_goodbit) {
5115 if(basic_streambuf_char_sputn(base->strbuf, MSVCP_basic_string_char_c_str(str), len) != len)
5116 state = IOSTATE_badbit;
5119 if(state == IOSTATE_goodbit) {
5120 for(; pad!=0; pad--) {
5121 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5122 state = IOSTATE_badbit;
5123 break;
5128 base->base.wide = 0;
5129 }else {
5130 state = IOSTATE_badbit;
5132 basic_ostream_char_sentry_destroy(ostr);
5134 basic_ios_char_setstate(base, state);
5135 return ostr;
5138 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@C@Z */
5139 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@C@Z */
5140 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z */
5141 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z */
5142 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@E@Z */
5143 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@E@Z */
5144 basic_ostream_char* __cdecl basic_ostream_char_print_ch(basic_ostream_char *ostr, char ch)
5146 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5147 IOSB_iostate state = IOSTATE_goodbit;
5149 TRACE("(%p %d)\n", ostr, ch);
5151 if(basic_ostream_char_sentry_create(ostr)) {
5152 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
5154 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
5155 for(; pad!=0; pad--) {
5156 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5157 state = IOSTATE_badbit;
5158 break;
5163 if(state == IOSTATE_goodbit) {
5164 if(basic_streambuf_char_sputc(base->strbuf, ch) == EOF)
5165 state = IOSTATE_badbit;
5168 if(state == IOSTATE_goodbit) {
5169 for(; pad!=0; pad--) {
5170 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5171 state = IOSTATE_badbit;
5172 break;
5177 base->base.wide = 0;
5178 }else {
5179 state = IOSTATE_badbit;
5181 basic_ostream_char_sentry_destroy(ostr);
5183 basic_ios_char_setstate(base, state);
5184 return ostr;
5187 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBC@Z */
5188 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBC@Z */
5189 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z */
5190 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z */
5191 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBE@Z */
5192 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBE@Z */
5193 basic_ostream_char* __cdecl basic_ostream_char_print_str(basic_ostream_char *ostr, const char *str)
5195 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5196 IOSB_iostate state = IOSTATE_goodbit;
5198 TRACE("(%p %s)\n", ostr, str);
5200 if(basic_ostream_char_sentry_create(ostr)) {
5201 size_t len = strlen(str);
5202 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
5204 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
5205 for(; pad!=0; pad--) {
5206 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5207 state = IOSTATE_badbit;
5208 break;
5213 if(state == IOSTATE_goodbit) {
5214 if(basic_streambuf_char_sputn(base->strbuf, str, len) != len)
5215 state = IOSTATE_badbit;
5218 if(state == IOSTATE_goodbit) {
5219 for(; pad!=0; pad--) {
5220 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5221 state = IOSTATE_badbit;
5222 break;
5227 base->base.wide = 0;
5228 }else {
5229 state = IOSTATE_badbit;
5231 basic_ostream_char_sentry_destroy(ostr);
5233 basic_ios_char_setstate(base, state);
5234 return ostr;
5237 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
5238 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
5239 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func, 8)
5240 basic_ostream_char* __thiscall basic_ostream_char_print_func(basic_ostream_char *this,
5241 basic_ostream_char* (__cdecl *pfunc)(basic_ostream_char*))
5243 TRACE("(%p %p)\n", this, pfunc);
5244 pfunc(this);
5245 return this;
5248 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
5249 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
5250 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_basic_ios, 8)
5251 basic_ostream_char* __thiscall basic_ostream_char_print_func_basic_ios(basic_ostream_char *this,
5252 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
5254 TRACE("(%p %p)\n", this, pfunc);
5255 pfunc(basic_ostream_char_get_basic_ios(this));
5256 return this;
5259 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
5260 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
5261 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_ios_base, 8)
5262 basic_ostream_char* __thiscall basic_ostream_char_print_func_ios_base(
5263 basic_ostream_char *this, ios_base* (__cdecl *pfunc)(ios_base*))
5265 TRACE("(%p %p)\n", this, pfunc);
5266 pfunc(&basic_ostream_char_get_basic_ios(this)->base);
5267 return this;
5270 /* Caution: basic_ostream uses virtual inheritance. */
5271 static inline basic_ios_wchar* basic_ostream_short_get_basic_ios(basic_ostream_wchar *this)
5273 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
5276 static inline basic_ios_wchar* basic_ostream_short_to_basic_ios(basic_ostream_wchar *ptr)
5278 return (basic_ios_wchar*)((char*)ptr+basic_ostream_short_vbtable[1]);
5281 static inline basic_ostream_wchar* basic_ostream_short_from_basic_ios(basic_ios_wchar *ptr)
5283 return (basic_ostream_wchar*)((char*)ptr-basic_ostream_short_vbtable[1]);
5286 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
5287 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
5288 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor, 20)
5289 basic_ostream_wchar* __thiscall basic_ostream_short_ctor(basic_ostream_wchar *this,
5290 basic_streambuf_wchar *strbuf, bool isstd, bool init, bool virt_init)
5292 basic_ios_wchar *base;
5294 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
5296 if(virt_init) {
5297 this->vbtable = basic_ostream_short_vbtable;
5298 base = basic_ostream_short_get_basic_ios(this);
5299 basic_ios_short_ctor(base);
5300 }else {
5301 base = basic_ostream_short_get_basic_ios(this);
5304 base->base.vtable = &basic_ostream_short_vtable;
5305 if(init)
5306 basic_ios_short_init(base, strbuf, isstd);
5307 return this;
5310 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
5311 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
5312 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor_uninitialized, 12)
5313 basic_ostream_wchar* __thiscall basic_ostream_short_ctor_uninitialized(basic_ostream_wchar *this,
5314 int uninitialized, bool virt_init)
5316 basic_ios_wchar *base;
5318 TRACE("(%p %d)\n", this, uninitialized);
5320 if(virt_init) {
5321 this->vbtable = basic_ostream_short_vbtable;
5322 base = basic_ostream_short_get_basic_ios(this);
5323 basic_ios_short_ctor(base);
5324 }else {
5325 base = basic_ostream_short_get_basic_ios(this);
5328 base->base.vtable = &basic_ostream_short_vtable;
5329 ios_base_Addstd(&base->base);
5330 return this;
5333 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
5334 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
5335 DEFINE_THISCALL_WRAPPER(basic_ostream_short_dtor, 4)
5336 void __thiscall basic_ostream_short_dtor(basic_ios_wchar *base)
5338 basic_ostream_wchar *this = basic_ostream_short_from_basic_ios(base);
5340 /* don't destroy virtual base here */
5341 TRACE("(%p)\n", this);
5344 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
5345 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
5346 DEFINE_THISCALL_WRAPPER(basic_ostream_short_vbase_dtor, 4)
5347 void __thiscall basic_ostream_short_vbase_dtor(basic_ostream_wchar *this)
5349 TRACE("(%p)\n", this);
5350 basic_ostream_short_dtor(basic_ostream_short_to_basic_ios(this));
5351 basic_ios_short_dtor(basic_ostream_short_get_basic_ios(this));
5354 DEFINE_THISCALL_WRAPPER(basic_ostream_short_vector_dtor, 8)
5355 basic_ostream_wchar* __thiscall basic_ostream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
5357 basic_ostream_wchar *this = basic_ostream_short_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_short_vbase_dtor(this+i);
5367 operator_delete(ptr);
5368 } else {
5369 basic_ostream_short_vbase_dtor(this);
5370 if(flags & 1)
5371 operator_delete(this);
5374 return this;
5377 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
5378 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
5379 DEFINE_THISCALL_WRAPPER(basic_ostream_short_flush, 4)
5380 basic_ostream_wchar* __thiscall basic_ostream_short_flush(basic_ostream_wchar *this)
5382 /* this function is not matching C++ specification */
5383 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5385 TRACE("(%p)\n", this);
5387 if(basic_ios_short_rdbuf_get(base) && ios_base_good(&base->base)
5388 && basic_streambuf_wchar_pubsync(basic_ios_short_rdbuf_get(base))==-1)
5389 basic_ios_short_setstate(base, IOSTATE_badbit);
5390 return this;
5393 /* ?flush@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
5394 /* ?flush@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
5395 basic_ostream_wchar* __cdecl flush_ostream_short(basic_ostream_wchar *ostream)
5397 return basic_ostream_short_flush(ostream);
5400 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
5401 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
5402 DEFINE_THISCALL_WRAPPER(basic_ostream_short_osfx, 4)
5403 void __thiscall basic_ostream_short_osfx(basic_ostream_wchar *this)
5405 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5407 TRACE("(%p)\n", this);
5409 if(base->base.fmtfl & FMTFLAG_unitbuf)
5410 basic_ostream_short_flush(this);
5413 static BOOL basic_ostream_short_sentry_create(basic_ostream_wchar *ostr)
5415 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(ostr);
5417 if(ios_base_good(&base->base) && base->stream)
5418 basic_ostream_short_flush(base->stream);
5420 return ios_base_good(&base->base);
5423 static void basic_ostream_short_sentry_destroy(basic_ostream_wchar *ostr)
5425 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(ostr);
5427 if(ios_base_good(&base->base) && !__uncaught_exception())
5428 basic_ostream_short_osfx(ostr);
5431 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE_NXZ */
5432 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA_NXZ */
5433 DEFINE_THISCALL_WRAPPER(basic_ostream_short_opfx, 4)
5434 bool __thiscall basic_ostream_short_opfx(basic_ostream_wchar *this)
5436 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5438 TRACE("(%p)\n", this);
5440 if(ios_base_good(&base->base) && base->stream)
5441 basic_ostream_short_flush(base->stream);
5442 return ios_base_good(&base->base);
5445 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
5446 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
5447 DEFINE_THISCALL_WRAPPER(basic_ostream_short_put, 8)
5448 basic_ostream_wchar* __thiscall basic_ostream_short_put(basic_ostream_wchar *this, wchar_t ch)
5450 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5452 TRACE("(%p %c)\n", this, ch);
5454 if(!basic_ostream_short_sentry_create(this)
5455 || basic_streambuf_wchar_sputc(base->strbuf, ch)==WEOF) {
5456 basic_ostream_short_sentry_destroy(this);
5457 basic_ios_short_setstate(base, IOSTATE_badbit);
5458 return this;
5461 basic_ostream_short_sentry_destroy(this);
5462 return this;
5465 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
5466 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
5467 DEFINE_THISCALL_WRAPPER(basic_ostream_short_seekp, 12)
5468 basic_ostream_wchar* __thiscall basic_ostream_short_seekp(basic_ostream_wchar *this, streamoff off, int way)
5470 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5472 TRACE("(%p %Id %d)\n", this, off, way);
5474 if(!ios_base_fail(&base->base)) {
5475 fpos_int seek;
5477 basic_streambuf_wchar_pubseekoff(basic_ios_short_rdbuf_get(base),
5478 &seek, off, way, OPENMODE_out);
5479 if(seek.off==-1 && seek.pos==0 && seek.state==0)
5480 basic_ios_short_setstate(base, IOSTATE_failbit);
5482 return this;
5485 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
5486 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
5487 DEFINE_THISCALL_WRAPPER(basic_ostream_short_seekp_fpos, 28)
5488 basic_ostream_wchar* __thiscall basic_ostream_short_seekp_fpos(basic_ostream_wchar *this, fpos_int pos)
5490 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5492 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
5494 if(!ios_base_fail(&base->base)) {
5495 fpos_int seek;
5497 basic_streambuf_wchar_pubseekpos(basic_ios_short_rdbuf_get(base),
5498 &seek, pos, OPENMODE_out);
5499 if(seek.off==-1 && seek.pos==0 && seek.state==0)
5500 basic_ios_short_setstate(base, IOSTATE_failbit);
5502 return this;
5505 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
5506 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
5507 DEFINE_THISCALL_WRAPPER(basic_ostream_short_tellp, 8)
5508 fpos_int* __thiscall basic_ostream_short_tellp(basic_ostream_wchar *this, fpos_int *ret)
5510 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5512 TRACE("(%p)\n", this);
5514 if(!ios_base_fail(&base->base)) {
5515 basic_streambuf_wchar_pubseekoff(basic_ios_short_rdbuf_get(base),
5516 ret, 0, SEEKDIR_cur, OPENMODE_out);
5517 }else {
5518 ret->off = -1;
5519 ret->pos = 0;
5520 ret->state = 0;
5522 return ret;
5525 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@PBGH@Z */
5526 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEBG_J@Z */
5527 DEFINE_THISCALL_WRAPPER(basic_ostream_short_write, 12)
5528 basic_ostream_wchar* __thiscall basic_ostream_short_write(basic_ostream_wchar *this, const wchar_t *str, streamsize count)
5530 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5532 TRACE("(%p %s %Id)\n", this, debugstr_w(str), count);
5534 if(!basic_ostream_short_sentry_create(this)
5535 || basic_streambuf_wchar_sputn(base->strbuf, str, count)!=count) {
5536 basic_ostream_short_sentry_destroy(this);
5537 basic_ios_short_setstate(base, IOSTATE_badbit);
5538 return this;
5541 basic_ostream_short_sentry_destroy(this);
5542 return this;
5545 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@F@Z */
5546 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@F@Z */
5547 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_short, 8)
5548 basic_ostream_wchar* __thiscall basic_ostream_short_print_short(basic_ostream_wchar *this, short val)
5550 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5551 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_short_rdbuf_get(base)));
5552 int state = IOSTATE_goodbit;
5554 TRACE("(%p %d)\n", this, val);
5556 if(basic_ostream_short_sentry_create(this)) {
5557 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
5558 ostreambuf_iterator_wchar dest;
5560 memset(&dest, 0, sizeof(dest));
5561 dest.strbuf = strbuf;
5562 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_short_fill_get(base),
5563 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
5564 ? (LONG)((unsigned short)val) : (LONG)val);
5566 basic_ostream_short_sentry_destroy(this);
5568 basic_ios_short_setstate(base, state);
5569 return this;
5572 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@G@Z */
5573 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@G@Z */
5574 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ushort, 8)
5575 basic_ostream_wchar* __thiscall basic_ostream_short_print_ushort(basic_ostream_wchar *this, unsigned short val)
5577 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5578 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_short_rdbuf_get(base)));
5579 int state = IOSTATE_goodbit;
5581 TRACE("(%p %d)\n", this, val);
5583 if(basic_ostream_short_sentry_create(this)) {
5584 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
5585 ostreambuf_iterator_wchar dest;
5587 memset(&dest, 0, sizeof(dest));
5588 dest.strbuf = strbuf;
5589 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_short_fill_get(base), val);
5591 basic_ostream_short_sentry_destroy(this);
5593 basic_ios_short_setstate(base, state);
5594 return this;
5597 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@H@Z */
5598 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@H@Z */
5599 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@J@Z */
5600 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@J@Z */
5601 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int, 8)
5602 basic_ostream_wchar* __thiscall basic_ostream_short_print_int(basic_ostream_wchar *this, int val)
5604 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5605 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_short_rdbuf_get(base)));
5606 int state = IOSTATE_goodbit;
5608 TRACE("(%p %d)\n", this, val);
5610 if(basic_ostream_short_sentry_create(this)) {
5611 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
5612 ostreambuf_iterator_wchar dest;
5614 memset(&dest, 0, sizeof(dest));
5615 dest.strbuf = strbuf;
5616 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_short_fill_get(base), val);
5618 basic_ostream_short_sentry_destroy(this);
5620 basic_ios_short_setstate(base, state);
5621 return this;
5624 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@I@Z */
5625 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@I@Z */
5626 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@K@Z */
5627 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@K@Z */
5628 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint, 8)
5629 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint(basic_ostream_wchar *this, unsigned int val)
5631 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5632 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_short_rdbuf_get(base)));
5633 int state = IOSTATE_goodbit;
5635 TRACE("(%p %u)\n", this, val);
5637 if(basic_ostream_short_sentry_create(this)) {
5638 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
5639 ostreambuf_iterator_wchar dest;
5641 memset(&dest, 0, sizeof(dest));
5642 dest.strbuf = strbuf;
5643 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_short_fill_get(base), val);
5645 basic_ostream_short_sentry_destroy(this);
5647 basic_ios_short_setstate(base, state);
5648 return this;
5651 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@M@Z */
5652 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@M@Z */
5653 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_float, 8)
5654 basic_ostream_wchar* __thiscall basic_ostream_short_print_float(basic_ostream_wchar *this, float val)
5656 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5657 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_short_rdbuf_get(base)));
5658 int state = IOSTATE_goodbit;
5660 TRACE("(%p %f)\n", this, val);
5662 if(basic_ostream_short_sentry_create(this)) {
5663 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
5664 ostreambuf_iterator_wchar dest;
5666 memset(&dest, 0, sizeof(dest));
5667 dest.strbuf = strbuf;
5668 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_short_fill_get(base), val);
5670 basic_ostream_short_sentry_destroy(this);
5672 basic_ios_short_setstate(base, state);
5673 return this;
5676 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@N@Z */
5677 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@N@Z */
5678 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_double, 12)
5679 basic_ostream_wchar* __thiscall basic_ostream_short_print_double(basic_ostream_wchar *this, double val)
5681 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5682 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_short_rdbuf_get(base)));
5683 int state = IOSTATE_goodbit;
5685 TRACE("(%p %lf)\n", this, val);
5687 if(basic_ostream_short_sentry_create(this)) {
5688 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
5689 ostreambuf_iterator_wchar dest;
5691 memset(&dest, 0, sizeof(dest));
5692 dest.strbuf = strbuf;
5693 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_short_fill_get(base), val);
5695 basic_ostream_short_sentry_destroy(this);
5697 basic_ios_short_setstate(base, state);
5698 return this;
5701 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@O@Z */
5702 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@O@Z */
5703 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ldouble, 12)
5704 basic_ostream_wchar* __thiscall basic_ostream_short_print_ldouble(basic_ostream_wchar *this, double val)
5706 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5707 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_short_rdbuf_get(base)));
5708 int state = IOSTATE_goodbit;
5710 TRACE("(%p %lf)\n", this, val);
5712 if(basic_ostream_short_sentry_create(this)) {
5713 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
5714 ostreambuf_iterator_wchar dest;
5716 memset(&dest, 0, sizeof(dest));
5717 dest.strbuf = strbuf;
5718 num_put_wchar_put_ldouble(numput, &dest, dest, &base->base, basic_ios_short_fill_get(base), val);
5720 basic_ostream_short_sentry_destroy(this);
5722 basic_ios_short_setstate(base, state);
5723 return this;
5726 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
5727 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
5728 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_streambuf, 8)
5729 basic_ostream_wchar* __thiscall basic_ostream_short_print_streambuf(basic_ostream_wchar *this, basic_streambuf_wchar *val)
5731 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5732 IOSB_iostate state = IOSTATE_badbit;
5733 unsigned short c = '\n';
5735 TRACE("(%p %p)\n", this, val);
5737 if(basic_ostream_short_sentry_create(this)) {
5738 for(c = basic_streambuf_wchar_sgetc(val); c!=WEOF;
5739 c = basic_streambuf_wchar_snextc(val)) {
5740 state = IOSTATE_goodbit;
5742 if(basic_streambuf_wchar_sputc(base->strbuf, c) == WEOF) {
5743 state = IOSTATE_badbit;
5744 break;
5747 }else {
5748 state = IOSTATE_badbit;
5750 basic_ostream_short_sentry_destroy(this);
5752 ios_base_width_set(&base->base, 0);
5753 basic_ios_short_setstate(base, state);
5754 return this;
5757 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PBX@Z */
5758 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEBX@Z */
5759 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ptr, 8)
5760 basic_ostream_wchar* __thiscall basic_ostream_short_print_ptr(basic_ostream_wchar *this, const void *val)
5762 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5763 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_short_rdbuf_get(base)));
5764 int state = IOSTATE_goodbit;
5766 TRACE("(%p %p)\n", this, val);
5768 if(basic_ostream_short_sentry_create(this)) {
5769 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
5770 ostreambuf_iterator_wchar dest;
5772 memset(&dest, 0, sizeof(dest));
5773 dest.strbuf = strbuf;
5774 num_put_wchar_put_ptr(numput, &dest, dest, &base->base, basic_ios_short_fill_get(base), val);
5776 basic_ostream_short_sentry_destroy(this);
5778 basic_ios_short_setstate(base, state);
5779 return this;
5782 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_J@Z */
5783 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_J@Z */
5784 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int64, 12)
5785 basic_ostream_wchar* __thiscall basic_ostream_short_print_int64(basic_ostream_wchar *this, __int64 val)
5787 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5788 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_short_rdbuf_get(base)));
5789 int state = IOSTATE_goodbit;
5791 TRACE("(%p)\n", this);
5793 if(basic_ostream_short_sentry_create(this)) {
5794 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
5795 ostreambuf_iterator_wchar dest;
5797 memset(&dest, 0, sizeof(dest));
5798 dest.strbuf = strbuf;
5799 num_put_wchar_put_int64(numput, &dest, dest, &base->base, basic_ios_short_fill_get(base), val);
5801 basic_ostream_short_sentry_destroy(this);
5803 basic_ios_short_setstate(base, state);
5804 return this;
5807 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_K@Z */
5808 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_K@Z */
5809 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint64, 12)
5810 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
5812 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5813 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_short_rdbuf_get(base)));
5814 int state = IOSTATE_goodbit;
5816 TRACE("(%p)\n", this);
5818 if(basic_ostream_short_sentry_create(this)) {
5819 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
5820 ostreambuf_iterator_wchar dest;
5822 memset(&dest, 0, sizeof(dest));
5823 dest.strbuf = strbuf;
5824 num_put_wchar_put_uint64(numput, &dest, dest, &base->base, basic_ios_short_fill_get(base), val);
5826 basic_ostream_short_sentry_destroy(this);
5828 basic_ios_short_setstate(base, state);
5829 return this;
5832 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_N@Z */
5833 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_N@Z */
5834 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_bool, 8)
5835 basic_ostream_wchar* __thiscall basic_ostream_short_print_bool(basic_ostream_wchar *this, bool val)
5837 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(this);
5838 const num_put *numput = num_put_short_use_facet(IOS_LOCALE(basic_ios_short_rdbuf_get(base)));
5839 int state = IOSTATE_goodbit;
5841 TRACE("(%p %x)\n", this, val);
5843 if(basic_ostream_short_sentry_create(this)) {
5844 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
5845 ostreambuf_iterator_wchar dest;
5847 memset(&dest, 0, sizeof(dest));
5848 dest.strbuf = strbuf;
5849 num_put_wchar_put_bool(numput, &dest, dest, &base->base, basic_ios_short_fill_get(base), val);
5851 basic_ostream_short_sentry_destroy(this);
5853 basic_ios_short_setstate(base, state);
5854 return this;
5857 /* ?ends@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
5858 /* ?ends@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
5859 basic_ostream_wchar* __cdecl basic_ostream_short_ends(basic_ostream_wchar *ostr)
5861 TRACE("(%p)\n", ostr);
5863 basic_ostream_short_put(ostr, 0);
5864 return ostr;
5867 /* ?endl@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
5868 /* ?endl@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
5869 basic_ostream_wchar* __cdecl basic_ostream_short_endl(basic_ostream_wchar *ostr)
5871 TRACE("(%p)\n", ostr);
5873 basic_ostream_short_put(ostr, '\n');
5874 basic_ostream_short_flush(ostr);
5875 return ostr;
5878 /* ??$?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 */
5879 /* ??$?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 */
5880 basic_ostream_wchar* __cdecl basic_ostream_short_print_bstr(basic_ostream_wchar *ostr, const basic_string_wchar *str)
5882 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(ostr);
5883 IOSB_iostate state = IOSTATE_goodbit;
5885 TRACE("(%p %p)\n", ostr, str);
5887 if(basic_ostream_short_sentry_create(ostr)) {
5888 size_t len = MSVCP_basic_string_wchar_length(str);
5889 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
5891 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
5892 for(; pad!=0; pad--) {
5893 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
5894 state = IOSTATE_badbit;
5895 break;
5900 if(state == IOSTATE_goodbit) {
5901 if(basic_streambuf_wchar_sputn(base->strbuf, MSVCP_basic_string_wchar_c_str(str), len) != len)
5902 state = IOSTATE_badbit;
5905 if(state == IOSTATE_goodbit) {
5906 for(; pad!=0; pad--) {
5907 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
5908 state = IOSTATE_badbit;
5909 break;
5914 base->base.wide = 0;
5915 }else {
5916 state = IOSTATE_badbit;
5918 basic_ostream_short_sentry_destroy(ostr);
5920 basic_ios_short_setstate(base, state);
5921 return ostr;
5924 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@G@Z */
5925 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@G@Z */
5926 basic_ostream_wchar* __cdecl basic_ostream_short_print_ch(basic_ostream_wchar *ostr, wchar_t ch)
5928 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(ostr);
5929 IOSB_iostate state = IOSTATE_goodbit;
5931 TRACE("(%p %d)\n", ostr, ch);
5933 if(basic_ostream_short_sentry_create(ostr)) {
5934 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
5936 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
5937 for(; pad!=0; pad--) {
5938 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
5939 state = IOSTATE_badbit;
5940 break;
5945 if(state == IOSTATE_goodbit) {
5946 if(basic_streambuf_wchar_sputc(base->strbuf, ch) == WEOF)
5947 state = IOSTATE_badbit;
5950 if(state == IOSTATE_goodbit) {
5951 for(; pad!=0; pad--) {
5952 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
5953 state = IOSTATE_badbit;
5954 break;
5959 base->base.wide = 0;
5960 }else {
5961 state = IOSTATE_badbit;
5963 basic_ostream_short_sentry_destroy(ostr);
5965 basic_ios_short_setstate(base, state);
5966 return ostr;
5969 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@PBG@Z */
5970 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@PEBG@Z */
5971 basic_ostream_wchar* __cdecl basic_ostream_short_print_str(basic_ostream_wchar *ostr, const wchar_t *str)
5973 basic_ios_wchar *base = basic_ostream_short_get_basic_ios(ostr);
5974 IOSB_iostate state = IOSTATE_goodbit;
5976 TRACE("(%p %s)\n", ostr, debugstr_w(str));
5978 if(basic_ostream_short_sentry_create(ostr)) {
5979 size_t len = wcslen(str);
5980 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
5982 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
5983 for(; pad!=0; pad--) {
5984 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
5985 state = IOSTATE_badbit;
5986 break;
5991 if(state == IOSTATE_goodbit) {
5992 if(basic_streambuf_wchar_sputn(base->strbuf, str, len) != len)
5993 state = IOSTATE_badbit;
5996 if(state == IOSTATE_goodbit) {
5997 for(; pad!=0; pad--) {
5998 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
5999 state = IOSTATE_badbit;
6000 break;
6005 base->base.wide = 0;
6006 }else {
6007 state = IOSTATE_badbit;
6009 basic_ostream_short_sentry_destroy(ostr);
6011 basic_ios_short_setstate(base, state);
6012 return ostr;
6015 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
6016 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
6017 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_func, 8)
6018 basic_ostream_wchar* __thiscall basic_ostream_short_print_func(basic_ostream_wchar *this,
6019 basic_ostream_wchar* (__cdecl *pfunc)(basic_ostream_wchar*))
6021 TRACE("(%p %p)\n", this, pfunc);
6022 pfunc(this);
6023 return this;
6026 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
6027 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
6028 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_func_basic_ios, 8)
6029 basic_ostream_wchar* __thiscall basic_ostream_short_print_func_basic_ios(basic_ostream_wchar *this,
6030 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
6032 TRACE("(%p %p)\n", this, pfunc);
6033 pfunc(basic_ostream_short_get_basic_ios(this));
6034 return this;
6037 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
6038 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
6039 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_func_ios_base, 8)
6040 basic_ostream_wchar* __thiscall basic_ostream_short_print_func_ios_base(
6041 basic_ostream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
6043 TRACE("(%p %p)\n", this, pfunc);
6044 pfunc(&basic_ostream_short_get_basic_ios(this)->base);
6045 return this;
6048 /* Caution: basic_istream uses virtual inheritance. */
6049 static inline basic_ios_char* basic_istream_char_get_basic_ios(basic_istream_char *this)
6051 return (basic_ios_char*)((char*)this+this->vbtable[1]);
6054 static inline basic_ios_char* basic_istream_char_to_basic_ios(basic_istream_char *ptr)
6056 return (basic_ios_char*)((char*)ptr+basic_istream_char_vbtable[1]);
6059 static inline basic_istream_char* basic_istream_char_from_basic_ios(basic_ios_char *ptr)
6061 return (basic_istream_char*)((char*)ptr-basic_istream_char_vbtable[1]);
6064 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
6065 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
6066 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor, 16)
6067 basic_istream_char* __thiscall basic_istream_char_ctor(basic_istream_char *this, basic_streambuf_char *strbuf, bool isstd, bool virt_init)
6069 basic_ios_char *base;
6071 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
6073 if(virt_init) {
6074 this->vbtable = basic_istream_char_vbtable;
6075 base = basic_istream_char_get_basic_ios(this);
6076 basic_ios_char_ctor(base);
6077 }else {
6078 base = basic_istream_char_get_basic_ios(this);
6081 base->base.vtable = &basic_istream_char_vtable;
6082 this->count = 0;
6083 basic_ios_char_init(base, strbuf, isstd);
6084 return this;
6087 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
6088 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
6089 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_uninitialized, 12)
6090 basic_istream_char* __thiscall basic_istream_char_ctor_uninitialized(basic_istream_char *this, int uninitialized, bool virt_init)
6092 basic_ios_char *base;
6094 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
6096 if(virt_init) {
6097 this->vbtable = basic_istream_char_vbtable;
6098 base = basic_istream_char_get_basic_ios(this);
6099 basic_ios_char_ctor(base);
6100 }else {
6101 base = basic_istream_char_get_basic_ios(this);
6104 base->base.vtable = &basic_istream_char_vtable;
6105 ios_base_Addstd(&base->base);
6106 return this;
6109 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UAE@XZ */
6110 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
6111 DEFINE_THISCALL_WRAPPER(basic_istream_char_dtor, 4)
6112 void __thiscall basic_istream_char_dtor(basic_ios_char *base)
6114 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
6116 /* don't destroy virtual base here */
6117 TRACE("(%p)\n", this);
6120 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
6121 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
6122 DEFINE_THISCALL_WRAPPER(basic_istream_char_vbase_dtor, 4)
6123 void __thiscall basic_istream_char_vbase_dtor(basic_istream_char *this)
6125 TRACE("(%p)\n", this);
6126 basic_istream_char_dtor(basic_istream_char_to_basic_ios(this));
6127 basic_ios_char_dtor(basic_istream_char_get_basic_ios(this));
6130 DEFINE_THISCALL_WRAPPER(basic_istream_char_vector_dtor, 8)
6131 basic_istream_char* __thiscall basic_istream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
6133 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
6135 TRACE("(%p %x)\n", this, flags);
6137 if(flags & 2) {
6138 /* we have an array, with the number of elements stored before the first object */
6139 INT_PTR i, *ptr = (INT_PTR *)this-1;
6141 for(i=*ptr-1; i>=0; i--)
6142 basic_istream_char_vbase_dtor(this+i);
6143 operator_delete(ptr);
6144 } else {
6145 basic_istream_char_vbase_dtor(this);
6146 if(flags & 1)
6147 operator_delete(this);
6150 return this;
6153 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
6154 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
6155 DEFINE_THISCALL_WRAPPER(basic_istream_char_ipfx, 8)
6156 bool __thiscall basic_istream_char_ipfx(basic_istream_char *this, bool noskip)
6158 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6160 TRACE("(%p %d)\n", this, noskip);
6162 if(ios_base_good(&base->base)) {
6163 if(basic_ios_char_tie_get(base))
6164 basic_ostream_char_flush(basic_ios_char_tie_get(base));
6166 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
6167 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6168 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(base->strbuf));
6169 int ch;
6171 for(ch = basic_streambuf_char_sgetc(strbuf); ;
6172 ch = basic_streambuf_char_snextc(strbuf)) {
6173 if(ch==EOF || !ctype_char_is_ch(ctype, _SPACE|_BLANK, ch))
6174 break;
6179 if(!ios_base_good(&base->base)) {
6180 basic_ios_char_setstate(base, IOSTATE_failbit);
6181 return FALSE;
6184 return TRUE;
6187 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
6188 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
6189 DEFINE_THISCALL_WRAPPER(basic_istream_char_isfx, 4)
6190 void __thiscall basic_istream_char_isfx(basic_istream_char *this)
6192 TRACE("(%p)\n", this);
6195 static BOOL basic_istream_char_sentry_create(basic_istream_char *istr, bool noskip)
6197 return basic_istream_char_ipfx(istr, noskip);
6200 static void basic_istream_char_sentry_destroy(basic_istream_char *istr)
6204 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBEHXZ */
6205 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QEBA_JXZ */
6206 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBA_JXZ */
6207 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBE_JXZ */
6208 DEFINE_THISCALL_WRAPPER(basic_istream_char_gcount, 4)
6209 streamsize __thiscall basic_istream_char_gcount(const basic_istream_char *this)
6211 TRACE("(%p)\n", this);
6212 return this->count;
6215 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
6216 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
6217 DEFINE_THISCALL_WRAPPER(basic_istream_char_get, 4)
6218 int __thiscall basic_istream_char_get(basic_istream_char *this)
6220 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6221 int ret;
6223 TRACE("(%p)\n", this);
6225 this->count = 0;
6227 if(!basic_istream_char_sentry_create(this, TRUE)) {
6228 basic_istream_char_sentry_destroy(this);
6229 return EOF;
6232 ret = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(base));
6233 basic_istream_char_sentry_destroy(this);
6234 if(ret == EOF)
6235 basic_ios_char_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
6236 else
6237 this->count++;
6239 return ret;
6242 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAD@Z */
6243 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAD@Z */
6244 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_ch, 8)
6245 basic_istream_char* __thiscall basic_istream_char_get_ch(basic_istream_char *this, char *ch)
6247 int ret;
6249 TRACE("(%p %p)\n", this, ch);
6251 ret = basic_istream_char_get(this);
6252 if(ret != EOF)
6253 *ch = (char)ret;
6254 return this;
6257 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
6258 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
6259 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str_delim, 16)
6260 basic_istream_char* __thiscall basic_istream_char_get_str_delim(basic_istream_char *this, char *str, streamsize count, char delim)
6262 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6263 int ch = delim;
6265 TRACE("(%p %p %Id %s)\n", this, str, count, debugstr_an(&delim, 1));
6267 this->count = 0;
6269 if(basic_istream_char_sentry_create(this, TRUE)) {
6270 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6272 for(ch = basic_streambuf_char_sgetc(strbuf); count>1;
6273 ch = basic_streambuf_char_snextc(strbuf)) {
6274 if(ch==EOF || ch==delim)
6275 break;
6277 *str++ = ch;
6278 this->count++;
6279 count--;
6282 basic_istream_char_sentry_destroy(this);
6284 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
6285 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
6286 if(count > 0)
6287 *str = 0;
6288 return this;
6291 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
6292 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
6293 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str, 12)
6294 basic_istream_char* __thiscall basic_istream_char_get_str(basic_istream_char *this, char *str, streamsize count)
6296 return basic_istream_char_get_str_delim(this, str, count, '\n');
6299 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
6300 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
6301 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf_delim, 12)
6302 basic_istream_char* __thiscall basic_istream_char_get_streambuf_delim(basic_istream_char *this, basic_streambuf_char *strbuf, char delim)
6304 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6305 int ch = delim;
6307 TRACE("(%p %p %s)\n", this, strbuf, debugstr_an(&delim, 1));
6309 this->count = 0;
6311 if(basic_istream_char_sentry_create(this, TRUE)) {
6312 basic_streambuf_char *strbuf_read = basic_ios_char_rdbuf_get(base);
6314 for(ch = basic_streambuf_char_sgetc(strbuf_read); ;
6315 ch = basic_streambuf_char_snextc(strbuf_read)) {
6316 if(ch==EOF || ch==delim)
6317 break;
6319 if(basic_streambuf_char_sputc(strbuf, ch) == EOF)
6320 break;
6321 this->count++;
6324 basic_istream_char_sentry_destroy(this);
6326 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
6327 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
6328 return this;
6331 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
6332 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
6333 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf, 8)
6334 basic_istream_char* __thiscall basic_istream_char_get_streambuf(basic_istream_char *this, basic_streambuf_char *strbuf)
6336 return basic_istream_char_get_streambuf_delim(this, strbuf, '\n');
6339 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
6340 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
6341 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline_delim, 16)
6342 basic_istream_char* __thiscall basic_istream_char_getline_delim(basic_istream_char *this, char *str, streamsize count, char delim)
6344 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6345 int ch = (unsigned char)delim;
6347 TRACE("(%p %p %Id %s)\n", this, str, count, debugstr_an(&delim, 1));
6349 this->count = 0;
6351 if(basic_istream_char_sentry_create(this, TRUE) && count>0) {
6352 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6354 while(count > 1) {
6355 ch = basic_streambuf_char_sbumpc(strbuf);
6357 if(ch==EOF || ch==(unsigned char)delim)
6358 break;
6360 *str++ = ch;
6361 this->count++;
6362 count--;
6365 if(ch == (unsigned char)delim)
6366 this->count++;
6367 else if(ch != EOF) {
6368 ch = basic_streambuf_char_sgetc(strbuf);
6370 if(ch == (unsigned char)delim) {
6371 basic_streambuf_char__Gninc(strbuf);
6372 this->count++;
6376 basic_istream_char_sentry_destroy(this);
6378 basic_ios_char_setstate(base, (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
6379 (!this->count || (ch!=(unsigned char)delim && ch!=EOF) ? IOSTATE_failbit : IOSTATE_goodbit));
6380 if(count > 0)
6381 *str = 0;
6382 return this;
6385 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
6386 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
6387 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline, 12)
6388 basic_istream_char* __thiscall basic_istream_char_getline(basic_istream_char *this, char *str, streamsize count)
6390 return basic_istream_char_getline_delim(this, str, count, '\n');
6393 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@HH@Z */
6394 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
6395 DEFINE_THISCALL_WRAPPER(basic_istream_char_ignore, 12)
6396 basic_istream_char* __thiscall basic_istream_char_ignore(basic_istream_char *this, streamsize count, int delim)
6398 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6399 int ch = (unsigned char)delim;
6400 unsigned int state;
6402 TRACE("(%p %Id %d)\n", this, count, delim);
6404 this->count = 0;
6406 if(basic_istream_char_sentry_create(this, TRUE)) {
6407 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6408 state = IOSTATE_goodbit;
6410 while(count > 0) {
6411 ch = basic_streambuf_char_sbumpc(strbuf);
6413 if(ch==EOF) {
6414 state = IOSTATE_eofbit;
6415 break;
6418 if(ch==delim)
6419 break;
6421 this->count++;
6422 if(count != INT_MAX)
6423 count--;
6425 }else
6426 state = IOSTATE_failbit;
6427 basic_istream_char_sentry_destroy(this);
6429 basic_ios_char_setstate(base, state);
6430 return this;
6433 /* ?ws@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@1@AAV21@@Z */
6434 /* ?ws@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
6435 basic_istream_char* __cdecl ws_basic_istream_char(basic_istream_char *istream)
6437 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
6438 int ch = '\n';
6440 TRACE("(%p)\n", istream);
6442 if(basic_istream_char_sentry_create(istream, TRUE)) {
6443 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6444 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(strbuf));
6446 for(ch = basic_streambuf_char_sgetc(strbuf); ctype_char_is_ch(ctype, _SPACE, ch);
6447 ch = basic_streambuf_char_snextc(strbuf)) {
6448 if(ch == EOF)
6449 break;
6452 basic_istream_char_sentry_destroy(istream);
6454 if(ch == EOF)
6455 basic_ios_char_setstate(base, IOSTATE_eofbit);
6456 return istream;
6459 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
6460 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
6461 DEFINE_THISCALL_WRAPPER(basic_istream_char_peek, 4)
6462 int __thiscall basic_istream_char_peek(basic_istream_char *this)
6464 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6465 int ret = EOF;
6467 TRACE("(%p)\n", this);
6469 this->count = 0;
6471 if(basic_istream_char_sentry_create(this, TRUE))
6472 ret = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
6473 basic_istream_char_sentry_destroy(this);
6475 if (ret == EOF)
6476 basic_ios_char_setstate(base, IOSTATE_eofbit);
6478 return ret;
6481 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
6482 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
6483 DEFINE_THISCALL_WRAPPER(basic_istream_char_read, 12)
6484 basic_istream_char* __thiscall basic_istream_char_read(basic_istream_char *this, char *str, streamsize count)
6486 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6487 IOSB_iostate state = IOSTATE_goodbit;
6489 TRACE("(%p %p %Id)\n", this, str, count);
6491 if(basic_istream_char_sentry_create(this, TRUE)) {
6492 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6494 this->count = basic_streambuf_char_sgetn(strbuf, str, count);
6495 if(this->count != count)
6496 state |= IOSTATE_failbit | IOSTATE_eofbit;
6497 }else {
6498 this->count = 0;
6500 basic_istream_char_sentry_destroy(this);
6502 basic_ios_char_setstate(base, state);
6503 return this;
6506 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
6507 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
6508 DEFINE_THISCALL_WRAPPER(basic_istream_char_readsome, 12)
6509 streamsize __thiscall basic_istream_char_readsome(basic_istream_char *this, char *str, streamsize count)
6511 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6512 IOSB_iostate state = IOSTATE_goodbit;
6514 TRACE("(%p %p %Id)\n", this, str, count);
6516 this->count = 0;
6518 if(basic_istream_char_sentry_create(this, TRUE)) {
6519 streamsize avail = basic_streambuf_char_in_avail(basic_ios_char_rdbuf_get(base));
6520 if(avail > count)
6521 avail = count;
6523 if(avail == -1)
6524 state |= IOSTATE_eofbit;
6525 else if(avail > 0)
6526 basic_istream_char_read(this, str, avail);
6527 }else {
6528 state |= IOSTATE_failbit;
6530 basic_istream_char_sentry_destroy(this);
6532 basic_ios_char_setstate(base, state);
6533 return this->count;
6536 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
6537 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
6538 DEFINE_THISCALL_WRAPPER(basic_istream_char_putback, 8)
6539 basic_istream_char* __thiscall basic_istream_char_putback(basic_istream_char *this, char ch)
6541 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6542 IOSB_iostate state = IOSTATE_goodbit;
6544 TRACE("(%p %c)\n", this, ch);
6546 this->count = 0;
6548 if(basic_istream_char_sentry_create(this, TRUE)) {
6549 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6551 if(!ios_base_good(&base->base))
6552 state |= IOSTATE_failbit;
6553 else if(!strbuf || basic_streambuf_char_sputbackc(strbuf, ch)==EOF)
6554 state |= IOSTATE_badbit;
6556 basic_istream_char_sentry_destroy(this);
6558 basic_ios_char_setstate(base, state);
6559 return this;
6562 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
6563 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
6564 DEFINE_THISCALL_WRAPPER(basic_istream_char_unget, 4)
6565 basic_istream_char* __thiscall basic_istream_char_unget(basic_istream_char *this)
6567 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6568 IOSB_iostate state = IOSTATE_goodbit;
6570 TRACE("(%p)\n", this);
6572 this->count = 0;
6574 if(basic_istream_char_sentry_create(this, TRUE)) {
6575 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6577 if(!ios_base_good(&base->base))
6578 state |= IOSTATE_failbit;
6579 else if(!strbuf || basic_streambuf_char_sungetc(strbuf)==EOF)
6580 state |= IOSTATE_badbit;
6582 basic_istream_char_sentry_destroy(this);
6584 basic_ios_char_setstate(base, state);
6585 return this;
6588 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
6589 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
6590 DEFINE_THISCALL_WRAPPER(basic_istream_char_sync, 4)
6591 int __thiscall basic_istream_char_sync(basic_istream_char *this)
6593 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6594 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6596 TRACE("(%p)\n", this);
6598 if(!strbuf)
6599 return -1;
6601 if(basic_istream_char_sentry_create(this, TRUE)) {
6602 if(basic_streambuf_char_pubsync(strbuf) != -1) {
6603 basic_istream_char_sentry_destroy(this);
6604 return 0;
6607 basic_istream_char_sentry_destroy(this);
6609 basic_ios_char_setstate(base, IOSTATE_badbit);
6610 return -1;
6613 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
6614 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
6615 DEFINE_THISCALL_WRAPPER(basic_istream_char_tellg, 8)
6616 fpos_int* __thiscall basic_istream_char_tellg(basic_istream_char *this, fpos_int *ret)
6618 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6620 TRACE("(%p %p)\n", this, ret);
6622 if(ios_base_fail(&base->base)) {
6623 ret->off = -1;
6624 ret->pos = 0;
6625 ret->state = 0;
6626 return ret;
6629 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
6630 ret, 0, SEEKDIR_cur, OPENMODE_in);
6632 return ret;
6635 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@JW4seekdir@ios_base@2@@Z */
6636 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JW4seekdir@ios_base@2@@Z */
6637 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
6638 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
6639 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg, 12)
6640 basic_istream_char* __thiscall basic_istream_char_seekg(basic_istream_char *this, streamoff off, int dir)
6642 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6644 TRACE("(%p %Id %d)\n", this, off, dir);
6646 if(!ios_base_fail(&base->base)) {
6647 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6648 fpos_int ret;
6650 basic_streambuf_char_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
6653 return this;
6656 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
6657 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
6658 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg_fpos, 28)
6659 basic_istream_char* __thiscall basic_istream_char_seekg_fpos(basic_istream_char *this, fpos_int pos)
6661 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6663 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
6665 if(!ios_base_fail(&base->base)) {
6666 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6667 fpos_int ret;
6669 basic_streambuf_char_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
6672 return this;
6675 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAF@Z */
6676 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAF@Z */
6677 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_short, 8)
6678 basic_istream_char* __thiscall basic_istream_char_read_short(basic_istream_char *this, short *v)
6680 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6681 int state = IOSTATE_goodbit;
6683 TRACE("(%p %p)\n", this, v);
6685 if(basic_istream_char_sentry_create(this, FALSE)) {
6686 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6687 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
6688 istreambuf_iterator_char first={0}, last={0};
6689 LONG tmp;
6691 first.strbuf = strbuf;
6692 num_get_char_get_long(numget, &last, first, last, &base->base, &state, &tmp);
6694 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
6695 *v = tmp;
6696 else
6697 state |= IOSTATE_failbit;
6699 basic_istream_char_sentry_destroy(this);
6701 basic_ios_char_setstate(base, state);
6702 return this;
6705 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAG@Z */
6706 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAG@Z */
6707 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ushort, 8)
6708 basic_istream_char* __thiscall basic_istream_char_read_ushort(basic_istream_char *this, unsigned short *v)
6710 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6711 int state = IOSTATE_goodbit;
6713 TRACE("(%p %p)\n", this, v);
6715 if(basic_istream_char_sentry_create(this, FALSE)) {
6716 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6717 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
6718 istreambuf_iterator_char first={0}, last={0};
6720 first.strbuf = strbuf;
6721 num_get_char_get_ushort(numget, &last, first, last, &base->base, &state, v);
6723 basic_istream_char_sentry_destroy(this);
6725 basic_ios_char_setstate(base, state);
6726 return this;
6729 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAH@Z */
6730 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAH@Z */
6731 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int, 8)
6732 basic_istream_char* __thiscall basic_istream_char_read_int(basic_istream_char *this, int *v)
6734 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6735 int state = IOSTATE_goodbit;
6737 TRACE("(%p %p)\n", this, v);
6739 if(basic_istream_char_sentry_create(this, FALSE)) {
6740 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6741 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
6742 istreambuf_iterator_char first={0}, last={0};
6744 first.strbuf = strbuf;
6745 num_get_char_get_long(numget, &last, first, last, &base->base, &state, (LONG*)v);
6747 basic_istream_char_sentry_destroy(this);
6749 basic_ios_char_setstate(base, state);
6750 return this;
6753 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAI@Z */
6754 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAI@Z */
6755 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint, 8)
6756 basic_istream_char* __thiscall basic_istream_char_read_uint(basic_istream_char *this, unsigned int *v)
6758 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6759 int state = IOSTATE_goodbit;
6761 TRACE("(%p %p)\n", this, v);
6763 if(basic_istream_char_sentry_create(this, FALSE)) {
6764 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6765 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
6766 istreambuf_iterator_char first={0}, last={0};
6768 first.strbuf = strbuf;
6769 num_get_char_get_uint(numget, &last, first, last, &base->base, &state, v);
6771 basic_istream_char_sentry_destroy(this);
6773 basic_ios_char_setstate(base, state);
6774 return this;
6777 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAJ@Z */
6778 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAJ@Z */
6779 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_long, 8)
6780 basic_istream_char* __thiscall basic_istream_char_read_long(basic_istream_char *this, LONG *v)
6782 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6783 int state = IOSTATE_goodbit;
6785 TRACE("(%p %p)\n", this, v);
6787 if(basic_istream_char_sentry_create(this, FALSE)) {
6788 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6789 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
6790 istreambuf_iterator_char first={0}, last={0};
6792 first.strbuf = strbuf;
6793 num_get_char_get_long(numget, &last, first, last, &base->base, &state, v);
6795 basic_istream_char_sentry_destroy(this);
6797 basic_ios_char_setstate(base, state);
6798 return this;
6801 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAK@Z */
6802 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAK@Z */
6803 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ulong, 8)
6804 basic_istream_char* __thiscall basic_istream_char_read_ulong(basic_istream_char *this, ULONG *v)
6806 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6807 int state = IOSTATE_goodbit;
6809 TRACE("(%p %p)\n", this, v);
6811 if(basic_istream_char_sentry_create(this, FALSE)) {
6812 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6813 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
6814 istreambuf_iterator_char first={0}, last={0};
6816 first.strbuf = strbuf;
6817 num_get_char_get_ulong(numget, &last, first, last, &base->base, &state, v);
6819 basic_istream_char_sentry_destroy(this);
6821 basic_ios_char_setstate(base, state);
6822 return this;
6825 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAM@Z */
6826 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAM@Z */
6827 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_float, 8)
6828 basic_istream_char* __thiscall basic_istream_char_read_float(basic_istream_char *this, float *v)
6830 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6831 int state = IOSTATE_goodbit;
6833 TRACE("(%p %p)\n", this, v);
6835 if(basic_istream_char_sentry_create(this, FALSE)) {
6836 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6837 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
6838 istreambuf_iterator_char first={0}, last={0};
6840 first.strbuf = strbuf;
6841 num_get_char_get_float(numget, &last, first, last, &base->base, &state, v);
6843 basic_istream_char_sentry_destroy(this);
6845 basic_ios_char_setstate(base, state);
6846 return this;
6849 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAN@Z */
6850 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAN@Z */
6851 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_double, 8)
6852 basic_istream_char* __thiscall basic_istream_char_read_double(basic_istream_char *this, double *v)
6854 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6855 int state = IOSTATE_goodbit;
6857 TRACE("(%p %p)\n", this, v);
6859 if(basic_istream_char_sentry_create(this, FALSE)) {
6860 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6861 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
6862 istreambuf_iterator_char first={0}, last={0};
6864 first.strbuf = strbuf;
6865 num_get_char_get_double(numget, &last, first, last, &base->base, &state, v);
6867 basic_istream_char_sentry_destroy(this);
6869 basic_ios_char_setstate(base, state);
6870 return this;
6873 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAO@Z */
6874 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAO@Z */
6875 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ldouble, 8)
6876 basic_istream_char* __thiscall basic_istream_char_read_ldouble(basic_istream_char *this, double *v)
6878 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6879 int state = IOSTATE_goodbit;
6881 TRACE("(%p %p)\n", this, v);
6883 if(basic_istream_char_sentry_create(this, FALSE)) {
6884 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6885 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
6886 istreambuf_iterator_char first={0}, last={0};
6888 first.strbuf = strbuf;
6889 num_get_char_get_ldouble(numget, &last, first, last, &base->base, &state, v);
6891 basic_istream_char_sentry_destroy(this);
6893 basic_ios_char_setstate(base, state);
6894 return this;
6897 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAPAX@Z */
6898 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
6899 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ptr, 8)
6900 basic_istream_char* __thiscall basic_istream_char_read_ptr(basic_istream_char *this, void **v)
6902 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6903 int state = IOSTATE_goodbit;
6905 TRACE("(%p %p)\n", this, v);
6907 if(basic_istream_char_sentry_create(this, FALSE)) {
6908 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6909 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
6910 istreambuf_iterator_char first={0}, last={0};
6912 first.strbuf = strbuf;
6913 num_get_char_get_void(numget, &last, first, last, &base->base, &state, v);
6915 basic_istream_char_sentry_destroy(this);
6917 basic_ios_char_setstate(base, state);
6918 return this;
6921 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_J@Z */
6922 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_J@Z */
6923 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int64, 8)
6924 basic_istream_char* __thiscall basic_istream_char_read_int64(basic_istream_char *this, __int64 *v)
6926 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6927 int state = IOSTATE_goodbit;
6929 TRACE("(%p %p)\n", this, v);
6931 if(basic_istream_char_sentry_create(this, FALSE)) {
6932 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6933 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
6934 istreambuf_iterator_char first={0}, last={0};
6936 first.strbuf = strbuf;
6937 num_get_char_get_int64(numget, &last, first, last, &base->base, &state, v);
6939 basic_istream_char_sentry_destroy(this);
6941 basic_ios_char_setstate(base, state);
6942 return this;
6945 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_K@Z */
6946 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_K@Z */
6947 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint64, 8)
6948 basic_istream_char* __thiscall basic_istream_char_read_uint64(basic_istream_char *this, unsigned __int64 *v)
6950 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6951 int state = IOSTATE_goodbit;
6953 TRACE("(%p %p)\n", this, v);
6955 if(basic_istream_char_sentry_create(this, FALSE)) {
6956 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6957 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
6958 istreambuf_iterator_char first={0}, last={0};
6960 first.strbuf = strbuf;
6961 num_get_char_get_uint64(numget, &last, first, last, &base->base, &state, v);
6963 basic_istream_char_sentry_destroy(this);
6965 basic_ios_char_setstate(base, state);
6966 return this;
6969 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_N@Z */
6970 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_N@Z */
6971 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_bool, 8)
6972 basic_istream_char* __thiscall basic_istream_char_read_bool(basic_istream_char *this, bool *v)
6974 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6975 int state = IOSTATE_goodbit;
6977 TRACE("(%p %p)\n", this, v);
6979 if(basic_istream_char_sentry_create(this, FALSE)) {
6980 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6981 const num_get *numget = num_get_char_use_facet(IOS_LOCALE(strbuf));
6982 istreambuf_iterator_char first={0}, last={0};
6984 first.strbuf = strbuf;
6985 num_get_char_get_bool(numget, &last, first, last, &base->base, &state, v);
6987 basic_istream_char_sentry_destroy(this);
6989 basic_ios_char_setstate(base, state);
6990 return this;
6993 /* ??$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 */
6994 /* ??$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 */
6995 basic_istream_char* __cdecl basic_istream_char_getline_bstr_delim(
6996 basic_istream_char *istream, basic_string_char *str, char delim)
6998 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
6999 IOSB_iostate state = IOSTATE_goodbit;
7000 int c = (unsigned char)delim;
7002 TRACE("(%p %p %s)\n", istream, str, debugstr_an(&delim, 1));
7004 MSVCP_basic_string_char_clear(str);
7005 if(basic_istream_char_sentry_create(istream, TRUE)) {
7006 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7008 c = basic_streambuf_char_sgetc(strbuf);
7009 for(; c!=(unsigned char)delim && c!=EOF; c = basic_streambuf_char_snextc(strbuf))
7010 MSVCP_basic_string_char_append_ch(str, c);
7011 if(c==EOF) state |= IOSTATE_eofbit;
7012 else if(c==(unsigned char)delim) basic_streambuf_char_sbumpc(strbuf);
7014 if(!MSVCP_basic_string_char_length(str) && c!=(unsigned char)delim) state |= IOSTATE_failbit;
7016 basic_istream_char_sentry_destroy(istream);
7018 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream), state);
7019 return istream;
7022 /* ??$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 */
7023 /* ??$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 */
7024 basic_istream_char* __cdecl basic_istream_char_getline_bstr(
7025 basic_istream_char *istream, basic_string_char *str)
7027 return basic_istream_char_getline_bstr_delim(istream, str, '\n');
7030 /* ??$?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 */
7031 /* ??$?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 */
7032 basic_istream_char* __cdecl basic_istream_char_read_bstr(
7033 basic_istream_char *istream, basic_string_char *str)
7035 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
7036 IOSB_iostate state = IOSTATE_failbit;
7037 int c = '\n';
7039 TRACE("(%p %p)\n", istream, str);
7041 if(basic_istream_char_sentry_create(istream, FALSE)) {
7042 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(base->strbuf));
7043 size_t count = ios_base_width_get(&base->base);
7045 if(!count)
7046 count = -1;
7048 MSVCP_basic_string_char_clear(str);
7050 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
7051 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
7052 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
7053 state = IOSTATE_goodbit;
7054 MSVCP_basic_string_char_append_ch(str, c);
7057 basic_istream_char_sentry_destroy(istream);
7059 ios_base_width_set(&base->base, 0);
7060 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7061 return istream;
7064 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAD@Z */
7065 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAD@Z */
7066 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAC@Z */
7067 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAC@Z */
7068 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAE@Z */
7069 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAE@Z */
7070 basic_istream_char* __cdecl basic_istream_char_read_str(basic_istream_char *istream, char *str)
7072 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
7073 IOSB_iostate state = IOSTATE_failbit;
7074 int c = '\n';
7076 TRACE("(%p %p)\n", istream, str);
7078 if(basic_istream_char_sentry_create(istream, FALSE)) {
7079 const ctype_char *ctype = ctype_char_use_facet(IOS_LOCALE(base->strbuf));
7080 size_t count = ios_base_width_get(&base->base)-1;
7082 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
7083 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
7084 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
7085 state = IOSTATE_goodbit;
7086 *str++ = c;
7089 basic_istream_char_sentry_destroy(istream);
7091 *str = 0;
7092 ios_base_width_set(&base->base, 0);
7093 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7094 return istream;
7097 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAD@Z */
7098 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAD@Z */
7099 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAC@Z */
7100 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAC@Z */
7101 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAE@Z */
7102 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAE@Z */
7103 basic_istream_char* __cdecl basic_istream_char_read_ch(basic_istream_char *istream, char *ch)
7105 IOSB_iostate state = IOSTATE_failbit;
7106 int c = 0;
7108 TRACE("(%p %p)\n", istream, ch);
7110 if(basic_istream_char_sentry_create(istream, FALSE)) {
7111 c = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(
7112 basic_istream_char_get_basic_ios(istream)));
7113 if(c != EOF) {
7114 state = IOSTATE_goodbit;
7115 *ch = c;
7118 basic_istream_char_sentry_destroy(istream);
7120 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream),
7121 state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7122 return istream;
7125 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
7126 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
7127 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_streambuf, 8)
7128 basic_istream_char* __thiscall basic_istream_char_read_streambuf(
7129 basic_istream_char *this, basic_streambuf_char *streambuf)
7131 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7132 IOSB_iostate state = IOSTATE_failbit;
7133 int c = '\n';
7135 TRACE("(%p %p)\n", this, streambuf);
7137 if(basic_istream_char_sentry_create(this, FALSE)) {
7138 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base)); c!=EOF;
7139 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base))) {
7140 state = IOSTATE_goodbit;
7141 if(basic_streambuf_char_sputc(streambuf, c) == EOF)
7142 break;
7145 basic_istream_char_sentry_destroy(this);
7147 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7148 return this;
7151 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
7152 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
7153 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func, 8)
7154 basic_istream_char* __thiscall basic_istream_char_read_func(basic_istream_char *this,
7155 basic_istream_char* (__cdecl *pfunc)(basic_istream_char*))
7157 TRACE("(%p %p)\n", this, pfunc);
7158 pfunc(this);
7159 return this;
7162 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
7163 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
7164 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_basic_ios, 8)
7165 basic_istream_char* __thiscall basic_istream_char_read_func_basic_ios(basic_istream_char *this,
7166 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
7168 TRACE("(%p %p)\n", this, pfunc);
7169 pfunc(basic_istream_char_get_basic_ios(this));
7170 return this;
7173 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
7174 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
7175 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_ios_base, 8)
7176 basic_istream_char* __thiscall basic_istream_char_read_func_ios_base(basic_istream_char *this,
7177 ios_base* (__cdecl *pfunc)(ios_base*))
7179 TRACE("(%p %p)\n", this, pfunc);
7180 pfunc(&basic_istream_char_get_basic_ios(this)->base);
7181 return this;
7184 /* Caution: basic_istream uses virtual inheritance. */
7185 static inline basic_ios_wchar* basic_istream_short_get_basic_ios(basic_istream_wchar *this)
7187 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
7190 static inline basic_ios_wchar* basic_istream_short_to_basic_ios(basic_istream_wchar *ptr)
7192 return (basic_ios_wchar*)((char*)ptr+basic_istream_short_vbtable[1]);
7195 static inline basic_istream_wchar* basic_istream_short_from_basic_ios(basic_ios_wchar *ptr)
7197 return (basic_istream_wchar*)((char*)ptr-basic_istream_short_vbtable[1]);
7200 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
7201 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
7202 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor, 16)
7203 basic_istream_wchar* __thiscall basic_istream_short_ctor(basic_istream_wchar *this,
7204 basic_streambuf_wchar *strbuf, bool isstd, bool virt_init)
7206 basic_ios_wchar *base;
7208 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
7210 if(virt_init) {
7211 this->vbtable = basic_istream_short_vbtable;
7212 base = basic_istream_short_get_basic_ios(this);
7213 basic_ios_short_ctor(base);
7214 }else {
7215 base = basic_istream_short_get_basic_ios(this);
7218 base->base.vtable = &basic_istream_short_vtable;
7219 this->count = 0;
7220 basic_ios_short_init(base, strbuf, isstd);
7221 return this;
7224 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
7225 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
7226 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_uninitialized, 12)
7227 basic_istream_wchar* __thiscall basic_istream_short_ctor_uninitialized(
7228 basic_istream_wchar *this, int uninitialized, bool virt_init)
7230 basic_ios_wchar *base;
7232 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
7234 if(virt_init) {
7235 this->vbtable = basic_istream_short_vbtable;
7236 base = basic_istream_short_get_basic_ios(this);
7237 basic_ios_short_ctor(base);
7238 }else {
7239 base = basic_istream_short_get_basic_ios(this);
7242 base->base.vtable = &basic_istream_short_vtable;
7243 ios_base_Addstd(&base->base);
7244 return this;
7247 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UAE@XZ */
7248 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
7249 DEFINE_THISCALL_WRAPPER(basic_istream_short_dtor, 4)
7250 void __thiscall basic_istream_short_dtor(basic_ios_wchar *base)
7252 basic_istream_wchar *this = basic_istream_short_from_basic_ios(base);
7254 /* don't destroy virtual base here */
7255 TRACE("(%p)\n", this);
7258 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
7259 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
7260 DEFINE_THISCALL_WRAPPER(basic_istream_short_vbase_dtor, 4)
7261 void __thiscall basic_istream_short_vbase_dtor(basic_istream_wchar *this)
7263 TRACE("(%p)\n", this);
7264 basic_istream_short_dtor(basic_istream_short_to_basic_ios(this));
7265 basic_ios_short_dtor(basic_istream_short_get_basic_ios(this));
7268 DEFINE_THISCALL_WRAPPER(basic_istream_short_vector_dtor, 8)
7269 basic_istream_wchar* __thiscall basic_istream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
7271 basic_istream_wchar *this = basic_istream_short_from_basic_ios(base);
7273 TRACE("(%p %x)\n", this, flags);
7275 if(flags & 2) {
7276 /* we have an array, with the number of elements stored before the first object */
7277 INT_PTR i, *ptr = (INT_PTR *)this-1;
7279 for(i=*ptr-1; i>=0; i--)
7280 basic_istream_short_vbase_dtor(this+i);
7281 operator_delete(ptr);
7282 } else {
7283 basic_istream_short_vbase_dtor(this);
7284 if(flags & 1)
7285 operator_delete(this);
7288 return this;
7291 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
7292 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
7293 DEFINE_THISCALL_WRAPPER(basic_istream_short_ipfx, 8)
7294 bool __thiscall basic_istream_short_ipfx(basic_istream_wchar *this, bool noskip)
7296 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7298 TRACE("(%p %d)\n", this, noskip);
7300 if(ios_base_good(&base->base)) {
7301 if(basic_ios_short_tie_get(base))
7302 basic_ostream_short_flush(basic_ios_short_tie_get(base));
7304 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
7305 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7306 const ctype_wchar *ctype = ctype_wchar_use_facet(IOS_LOCALE(base->strbuf));
7307 int ch;
7309 for(ch = basic_streambuf_wchar_sgetc(strbuf); ;
7310 ch = basic_streambuf_wchar_snextc(strbuf)) {
7311 if(ch==WEOF || !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, ch))
7312 break;
7317 if(!ios_base_good(&base->base)) {
7318 basic_ios_short_setstate(base, IOSTATE_failbit);
7319 return FALSE;
7321 return TRUE;
7324 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
7325 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
7326 DEFINE_THISCALL_WRAPPER(basic_istream_short_isfx, 4)
7327 void __thiscall basic_istream_short_isfx(basic_istream_wchar *this)
7329 TRACE("(%p)\n", this);
7332 static BOOL basic_istream_short_sentry_create(basic_istream_wchar *istr, bool noskip)
7334 return basic_istream_short_ipfx(istr, noskip);
7337 static void basic_istream_short_sentry_destroy(basic_istream_wchar *istr)
7341 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBEHXZ */
7342 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QEBA_JXZ */
7343 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBA_JXZ */
7344 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBE_JXZ */
7345 DEFINE_THISCALL_WRAPPER(basic_istream_short_gcount, 4)
7346 streamsize __thiscall basic_istream_short_gcount(const basic_istream_wchar *this)
7348 TRACE("(%p)\n", this);
7349 return this->count;
7352 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
7353 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
7354 DEFINE_THISCALL_WRAPPER(basic_istream_short_get, 4)
7355 unsigned short __thiscall basic_istream_short_get(basic_istream_wchar *this)
7357 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7358 int ret;
7360 TRACE("(%p)\n", this);
7362 this->count = 0;
7364 if(!basic_istream_short_sentry_create(this, TRUE)) {
7365 basic_istream_short_sentry_destroy(this);
7366 return WEOF;
7369 ret = basic_streambuf_wchar_sbumpc(basic_ios_short_rdbuf_get(base));
7370 basic_istream_short_sentry_destroy(this);
7371 if(ret == WEOF)
7372 basic_ios_short_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
7373 else
7374 this->count++;
7376 return ret;
7379 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAG@Z */
7380 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAG@Z */
7381 DEFINE_THISCALL_WRAPPER(basic_istream_short_get_ch, 8)
7382 basic_istream_wchar* __thiscall basic_istream_short_get_ch(basic_istream_wchar *this, wchar_t *ch)
7384 unsigned short ret;
7386 TRACE("(%p %p)\n", this, ch);
7388 ret = basic_istream_short_get(this);
7389 if(ret != WEOF)
7390 *ch = (wchar_t)ret;
7391 return this;
7394 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
7395 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
7396 DEFINE_THISCALL_WRAPPER(basic_istream_short_get_str_delim, 16)
7397 basic_istream_wchar* __thiscall basic_istream_short_get_str_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
7399 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7400 unsigned short ch = delim;
7402 TRACE("(%p %p %Id %s)\n", this, str, count, debugstr_wn(&delim, 1));
7404 this->count = 0;
7406 if(basic_istream_short_sentry_create(this, TRUE)) {
7407 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7409 for(ch = basic_streambuf_wchar_sgetc(strbuf); count>1;
7410 ch = basic_streambuf_wchar_snextc(strbuf)) {
7411 if(ch==WEOF || ch==delim)
7412 break;
7414 *str++ = ch;
7415 this->count++;
7416 count--;
7419 basic_istream_short_sentry_destroy(this);
7421 basic_ios_short_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
7422 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7423 if(count > 0)
7424 *str = 0;
7425 return this;
7428 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
7429 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
7430 DEFINE_THISCALL_WRAPPER(basic_istream_short_get_str, 12)
7431 basic_istream_wchar* __thiscall basic_istream_short_get_str(basic_istream_wchar *this, wchar_t *str, streamsize count)
7433 return basic_istream_short_get_str_delim(this, str, count, '\n');
7436 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
7437 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
7438 DEFINE_THISCALL_WRAPPER(basic_istream_short_get_streambuf_delim, 12)
7439 basic_istream_wchar* __thiscall basic_istream_short_get_streambuf_delim(basic_istream_wchar *this, basic_streambuf_wchar *strbuf, wchar_t delim)
7441 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7442 unsigned short ch = delim;
7444 TRACE("(%p %p %s)\n", this, strbuf, debugstr_wn(&delim, 1));
7446 this->count = 0;
7448 if(basic_istream_short_sentry_create(this, TRUE)) {
7449 basic_streambuf_wchar *strbuf_read = basic_ios_short_rdbuf_get(base);
7451 for(ch = basic_streambuf_wchar_sgetc(strbuf_read); ;
7452 ch = basic_streambuf_wchar_snextc(strbuf_read)) {
7453 if(ch==WEOF || ch==delim)
7454 break;
7456 if(basic_streambuf_wchar_sputc(strbuf, ch) == WEOF)
7457 break;
7458 this->count++;
7461 basic_istream_short_sentry_destroy(this);
7463 basic_ios_short_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
7464 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7465 return this;
7468 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
7469 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
7470 DEFINE_THISCALL_WRAPPER(basic_istream_short_get_streambuf, 8)
7471 basic_istream_wchar* __thiscall basic_istream_short_get_streambuf(basic_istream_wchar *this, basic_streambuf_wchar *strbuf)
7473 return basic_istream_short_get_streambuf_delim(this, strbuf, '\n');
7476 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
7477 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
7478 DEFINE_THISCALL_WRAPPER(basic_istream_short_getline_delim, 16)
7479 basic_istream_wchar* __thiscall basic_istream_short_getline_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
7481 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7482 unsigned short ch = delim;
7484 TRACE("(%p %p %Id %s)\n", this, str, count, debugstr_wn(&delim, 1));
7486 this->count = 0;
7488 if(basic_istream_short_sentry_create(this, TRUE) && count>0) {
7489 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7491 while(count > 1) {
7492 ch = basic_streambuf_wchar_sbumpc(strbuf);
7494 if(ch==WEOF || ch==delim)
7495 break;
7497 *str++ = ch;
7498 this->count++;
7499 count--;
7502 if(ch == delim)
7503 this->count++;
7504 else if(ch != WEOF) {
7505 ch = basic_streambuf_wchar_sgetc(strbuf);
7507 if(ch == delim) {
7508 basic_streambuf_wchar__Gninc(strbuf);
7509 this->count++;
7513 basic_istream_short_sentry_destroy(this);
7515 basic_ios_short_setstate(base, (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
7516 (!this->count || (ch!=delim && ch!=WEOF) ? IOSTATE_failbit : IOSTATE_goodbit));
7517 if(count > 0)
7518 *str = 0;
7519 return this;
7522 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
7523 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
7524 DEFINE_THISCALL_WRAPPER(basic_istream_short_getline, 12)
7525 basic_istream_wchar* __thiscall basic_istream_short_getline(basic_istream_wchar *this, wchar_t *str, streamsize count)
7527 return basic_istream_short_getline_delim(this, str, count, '\n');
7530 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@HG@Z */
7531 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JG@Z */
7532 DEFINE_THISCALL_WRAPPER(basic_istream_short_ignore, 12)
7533 basic_istream_wchar* __thiscall basic_istream_short_ignore(basic_istream_wchar *this, streamsize count, unsigned short delim)
7535 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7536 unsigned short ch = delim;
7537 unsigned int state;
7539 TRACE("(%p %Id %d)\n", this, count, delim);
7541 this->count = 0;
7543 if(basic_istream_short_sentry_create(this, TRUE)) {
7544 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7545 state = IOSTATE_goodbit;
7547 while(count > 0) {
7548 ch = basic_streambuf_wchar_sbumpc(strbuf);
7550 if(ch==WEOF) {
7551 state = IOSTATE_eofbit;
7552 break;
7555 if(ch==delim)
7556 break;
7558 this->count++;
7559 if(count != INT_MAX)
7560 count--;
7562 }else
7563 state = IOSTATE_failbit;
7564 basic_istream_short_sentry_destroy(this);
7566 basic_ios_short_setstate(base, state);
7567 return this;
7570 /* ?ws@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@1@AAV21@@Z */
7571 /* ?ws@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
7572 basic_istream_wchar* __cdecl ws_basic_istream_short(basic_istream_wchar *istream)
7574 basic_ios_wchar *base = basic_istream_short_get_basic_ios(istream);
7575 unsigned short ch = '\n';
7577 TRACE("(%p)\n", istream);
7579 if(basic_istream_short_sentry_create(istream, TRUE)) {
7580 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7581 const ctype_wchar *ctype = ctype_wchar_use_facet(IOS_LOCALE(strbuf));
7583 for(ch = basic_streambuf_wchar_sgetc(strbuf); ctype_wchar_is_ch(ctype, _SPACE, ch);
7584 ch = basic_streambuf_wchar_snextc(strbuf)) {
7585 if(ch == WEOF)
7586 break;
7589 basic_istream_short_sentry_destroy(istream);
7591 if(ch == WEOF)
7592 basic_ios_short_setstate(base, IOSTATE_eofbit);
7593 return istream;
7596 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
7597 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
7598 DEFINE_THISCALL_WRAPPER(basic_istream_short_peek, 4)
7599 unsigned short __thiscall basic_istream_short_peek(basic_istream_wchar *this)
7601 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7602 unsigned short ret = WEOF;
7604 TRACE("(%p)\n", this);
7606 this->count = 0;
7608 if(basic_istream_short_sentry_create(this, TRUE))
7609 ret = basic_streambuf_wchar_sgetc(basic_ios_short_rdbuf_get(base));
7610 basic_istream_short_sentry_destroy(this);
7612 if (ret == WEOF)
7613 basic_ios_short_setstate(base, IOSTATE_eofbit);
7615 return ret;
7618 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
7619 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
7620 DEFINE_THISCALL_WRAPPER(basic_istream_short_read, 12)
7621 basic_istream_wchar* __thiscall basic_istream_short_read(basic_istream_wchar *this, wchar_t *str, streamsize count)
7623 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7624 IOSB_iostate state = IOSTATE_goodbit;
7626 TRACE("(%p %p %Id)\n", this, str, count);
7628 if(basic_istream_short_sentry_create(this, TRUE)) {
7629 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7631 this->count = basic_streambuf_wchar_sgetn(strbuf, str, count);
7632 if(this->count != count)
7633 state |= IOSTATE_failbit | IOSTATE_eofbit;
7634 }else {
7635 this->count = 0;
7637 basic_istream_short_sentry_destroy(this);
7639 basic_ios_short_setstate(base, state);
7640 return this;
7643 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
7644 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
7645 DEFINE_THISCALL_WRAPPER(basic_istream_short_readsome, 12)
7646 streamsize __thiscall basic_istream_short_readsome(basic_istream_wchar *this, wchar_t *str, streamsize count)
7648 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7649 IOSB_iostate state = IOSTATE_goodbit;
7651 TRACE("(%p %p %Id)\n", this, str, count);
7653 this->count = 0;
7655 if(basic_istream_short_sentry_create(this, TRUE)) {
7656 streamsize avail = basic_streambuf_wchar_in_avail(basic_ios_short_rdbuf_get(base));
7657 if(avail > count)
7658 avail = count;
7660 if(avail == -1)
7661 state |= IOSTATE_eofbit;
7662 else if(avail > 0)
7663 basic_istream_short_read(this, str, avail);
7664 }else {
7665 state |= IOSTATE_failbit;
7667 basic_istream_short_sentry_destroy(this);
7669 basic_ios_short_setstate(base, state);
7670 return this->count;
7673 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
7674 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
7675 DEFINE_THISCALL_WRAPPER(basic_istream_short_putback, 8)
7676 basic_istream_wchar* __thiscall basic_istream_short_putback(basic_istream_wchar *this, wchar_t ch)
7678 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7679 IOSB_iostate state = IOSTATE_goodbit;
7681 TRACE("(%p %c)\n", this, ch);
7683 this->count = 0;
7685 if(basic_istream_short_sentry_create(this, TRUE)) {
7686 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7688 if(!ios_base_good(&base->base))
7689 state |= IOSTATE_failbit;
7690 else if(!strbuf || basic_streambuf_wchar_sputbackc(strbuf, ch)==WEOF)
7691 state |= IOSTATE_badbit;
7693 basic_istream_short_sentry_destroy(this);
7695 basic_ios_short_setstate(base, state);
7696 return this;
7699 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
7700 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
7701 DEFINE_THISCALL_WRAPPER(basic_istream_short_unget, 4)
7702 basic_istream_wchar* __thiscall basic_istream_short_unget(basic_istream_wchar *this)
7704 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7705 IOSB_iostate state = IOSTATE_goodbit;
7707 TRACE("(%p)\n", this);
7709 this->count = 0;
7711 if(basic_istream_short_sentry_create(this, TRUE)) {
7712 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7714 if(!ios_base_good(&base->base))
7715 state |= IOSTATE_failbit;
7716 else if(!strbuf || basic_streambuf_wchar_sungetc(strbuf)==WEOF)
7717 state |= IOSTATE_badbit;
7719 basic_istream_short_sentry_destroy(this);
7721 basic_ios_short_setstate(base, state);
7722 return this;
7725 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHXZ */
7726 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAHXZ */
7727 DEFINE_THISCALL_WRAPPER(basic_istream_short_sync, 4)
7728 int __thiscall basic_istream_short_sync(basic_istream_wchar *this)
7730 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7731 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7733 TRACE("(%p)\n", this);
7735 if(!strbuf)
7736 return -1;
7738 if(basic_istream_short_sentry_create(this, TRUE)) {
7739 if(basic_streambuf_wchar_pubsync(strbuf) != -1) {
7740 basic_istream_short_sentry_destroy(this);
7741 return 0;
7744 basic_istream_short_sentry_destroy(this);
7746 basic_ios_short_setstate(base, IOSTATE_badbit);
7747 return -1;
7750 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
7751 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
7752 DEFINE_THISCALL_WRAPPER(basic_istream_short_tellg, 8)
7753 fpos_int* __thiscall basic_istream_short_tellg(basic_istream_wchar *this, fpos_int *ret)
7755 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7757 TRACE("(%p %p)\n", this, ret);
7759 if(ios_base_fail(&base->base)) {
7760 ret->off = -1;
7761 ret->pos = 0;
7762 ret->state = 0;
7763 return ret;
7766 basic_streambuf_wchar_pubseekoff(basic_ios_short_rdbuf_get(base),
7767 ret, 0, SEEKDIR_cur, OPENMODE_in);
7769 return ret;
7772 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@JW4seekdir@ios_base@2@@Z */
7773 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JW4seekdir@ios_base@2@@Z */
7774 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
7775 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
7776 DEFINE_THISCALL_WRAPPER(basic_istream_short_seekg, 12)
7777 basic_istream_wchar* __thiscall basic_istream_short_seekg(basic_istream_wchar *this, streamoff off, int dir)
7779 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7781 TRACE("(%p %Id %d)\n", this, off, dir);
7783 if(!ios_base_fail(&base->base)) {
7784 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7785 fpos_int ret;
7787 basic_streambuf_wchar_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
7790 return this;
7793 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
7794 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
7795 DEFINE_THISCALL_WRAPPER(basic_istream_short_seekg_fpos, 28)
7796 basic_istream_wchar* __thiscall basic_istream_short_seekg_fpos(basic_istream_wchar *this, fpos_int pos)
7798 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7800 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
7802 if(!ios_base_fail(&base->base)) {
7803 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7804 fpos_int ret;
7806 basic_streambuf_wchar_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
7809 return this;
7812 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAF@Z */
7813 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAF@Z */
7814 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_short, 8)
7815 basic_istream_wchar* __thiscall basic_istream_short_read_short(basic_istream_wchar *this, short *v)
7817 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7818 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
7819 int state = IOSTATE_goodbit;
7821 TRACE("(%p %p)\n", this, v);
7823 if(basic_istream_short_sentry_create(this, FALSE)) {
7824 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7825 istreambuf_iterator_wchar first={0}, last={0};
7826 LONG tmp;
7828 first.strbuf = strbuf;
7829 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, &tmp);
7831 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
7832 *v = tmp;
7833 else
7834 state |= IOSTATE_failbit;
7836 basic_istream_short_sentry_destroy(this);
7838 basic_ios_short_setstate(base, state);
7839 return this;
7842 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAH@Z */
7843 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAH@Z */
7844 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int, 8)
7845 basic_istream_wchar* __thiscall basic_istream_short_read_int(basic_istream_wchar *this, int *v)
7847 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7848 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
7849 int state = IOSTATE_goodbit;
7851 TRACE("(%p %p)\n", this, v);
7853 if(basic_istream_short_sentry_create(this, FALSE)) {
7854 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7855 istreambuf_iterator_wchar first={0}, last={0};
7857 first.strbuf = strbuf;
7858 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, (LONG*)v);
7860 basic_istream_short_sentry_destroy(this);
7862 basic_ios_short_setstate(base, state);
7863 return this;
7866 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAI@Z */
7867 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAI@Z */
7868 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint, 8)
7869 basic_istream_wchar* __thiscall basic_istream_short_read_uint(basic_istream_wchar *this, unsigned int *v)
7871 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7872 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
7873 int state = IOSTATE_goodbit;
7875 TRACE("(%p %p)\n", this, v);
7877 if(basic_istream_short_sentry_create(this, FALSE)) {
7878 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7879 istreambuf_iterator_wchar first={0}, last={0};
7881 first.strbuf = strbuf;
7882 num_get_wchar_get_uint(numget, &last, first, last, &base->base, &state, v);
7884 basic_istream_short_sentry_destroy(this);
7886 basic_ios_short_setstate(base, state);
7887 return this;
7890 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAJ@Z */
7891 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAJ@Z */
7892 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_long, 8)
7893 basic_istream_wchar* __thiscall basic_istream_short_read_long(basic_istream_wchar *this, LONG *v)
7895 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7896 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
7897 int state = IOSTATE_goodbit;
7899 TRACE("(%p %p)\n", this, v);
7901 if(basic_istream_short_sentry_create(this, FALSE)) {
7902 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7903 istreambuf_iterator_wchar first={0}, last={0};
7905 first.strbuf = strbuf;
7906 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v);
7908 basic_istream_short_sentry_destroy(this);
7910 basic_ios_short_setstate(base, state);
7911 return this;
7914 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAK@Z */
7915 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAK@Z */
7916 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ulong, 8)
7917 basic_istream_wchar* __thiscall basic_istream_short_read_ulong(basic_istream_wchar *this, ULONG *v)
7919 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7920 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
7921 int state = IOSTATE_goodbit;
7923 TRACE("(%p %p)\n", this, v);
7925 if(basic_istream_short_sentry_create(this, FALSE)) {
7926 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7927 istreambuf_iterator_wchar first={0}, last={0};
7929 first.strbuf = strbuf;
7930 num_get_wchar_get_ulong(numget, &last, first, last, &base->base, &state, v);
7932 basic_istream_short_sentry_destroy(this);
7934 basic_ios_short_setstate(base, state);
7935 return this;
7938 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAM@Z */
7939 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAM@Z */
7940 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_float, 8)
7941 basic_istream_wchar* __thiscall basic_istream_short_read_float(basic_istream_wchar *this, float *v)
7943 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7944 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
7945 int state = IOSTATE_goodbit;
7947 TRACE("(%p %p)\n", this, v);
7949 if(basic_istream_short_sentry_create(this, FALSE)) {
7950 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7951 istreambuf_iterator_wchar first={0}, last={0};
7953 first.strbuf = strbuf;
7954 num_get_wchar_get_float(numget, &last, first, last, &base->base, &state, v);
7956 basic_istream_short_sentry_destroy(this);
7958 basic_ios_short_setstate(base, state);
7959 return this;
7962 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAN@Z */
7963 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAN@Z */
7964 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_double, 8)
7965 basic_istream_wchar* __thiscall basic_istream_short_read_double(basic_istream_wchar *this, double *v)
7967 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7968 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
7969 int state = IOSTATE_goodbit;
7971 TRACE("(%p %p)\n", this, v);
7973 if(basic_istream_short_sentry_create(this, FALSE)) {
7974 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7975 istreambuf_iterator_wchar first={0}, last={0};
7977 first.strbuf = strbuf;
7978 num_get_wchar_get_double(numget, &last, first, last, &base->base, &state, v);
7980 basic_istream_short_sentry_destroy(this);
7982 basic_ios_short_setstate(base, state);
7983 return this;
7986 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAO@Z */
7987 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAO@Z */
7988 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ldouble, 8)
7989 basic_istream_wchar* __thiscall basic_istream_short_read_ldouble(basic_istream_wchar *this, double *v)
7991 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
7992 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
7993 int state = IOSTATE_goodbit;
7995 TRACE("(%p %p)\n", this, v);
7997 if(basic_istream_short_sentry_create(this, FALSE)) {
7998 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
7999 istreambuf_iterator_wchar first={0}, last={0};
8001 first.strbuf = strbuf;
8002 num_get_wchar_get_ldouble(numget, &last, first, last, &base->base, &state, v);
8004 basic_istream_short_sentry_destroy(this);
8006 basic_ios_short_setstate(base, state);
8007 return this;
8010 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAPAX@Z */
8011 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
8012 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ptr, 8)
8013 basic_istream_wchar* __thiscall basic_istream_short_read_ptr(basic_istream_wchar *this, void **v)
8015 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8016 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
8017 int state = IOSTATE_goodbit;
8019 TRACE("(%p %p)\n", this, v);
8021 if(basic_istream_short_sentry_create(this, FALSE)) {
8022 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
8023 istreambuf_iterator_wchar first={0}, last={0};
8025 first.strbuf = strbuf;
8026 num_get_wchar_get_void(numget, &last, first, last, &base->base, &state, v);
8028 basic_istream_short_sentry_destroy(this);
8030 basic_ios_short_setstate(base, state);
8031 return this;
8034 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_J@Z */
8035 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_J@Z */
8036 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int64, 8)
8037 basic_istream_wchar* __thiscall basic_istream_short_read_int64(basic_istream_wchar *this, __int64 *v)
8039 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8040 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
8041 int state = IOSTATE_goodbit;
8043 TRACE("(%p %p)\n", this, v);
8045 if(basic_istream_short_sentry_create(this, FALSE)) {
8046 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
8047 istreambuf_iterator_wchar first={0}, last={0};
8049 first.strbuf = strbuf;
8050 num_get_wchar_get_int64(numget, &last, first, last, &base->base, &state, v);
8052 basic_istream_short_sentry_destroy(this);
8054 basic_ios_short_setstate(base, state);
8055 return this;
8058 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_K@Z */
8059 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_K@Z */
8060 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint64, 8)
8061 basic_istream_wchar* __thiscall basic_istream_short_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
8063 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8064 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
8065 int state = IOSTATE_goodbit;
8067 TRACE("(%p %p)\n", this, v);
8069 if(basic_istream_short_sentry_create(this, FALSE)) {
8070 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
8071 istreambuf_iterator_wchar first={0}, last={0};
8073 first.strbuf = strbuf;
8074 num_get_wchar_get_uint64(numget, &last, first, last, &base->base, &state, v);
8076 basic_istream_short_sentry_destroy(this);
8078 basic_ios_short_setstate(base, state);
8079 return this;
8082 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_N@Z */
8083 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_N@Z */
8084 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_bool, 8)
8085 basic_istream_wchar* __thiscall basic_istream_short_read_bool(basic_istream_wchar *this, bool *v)
8087 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8088 const num_get *numget = num_get_short_use_facet(IOS_LOCALE(base->strbuf));
8089 int state = IOSTATE_goodbit;
8091 TRACE("(%p %p)\n", this, v);
8093 if(basic_istream_short_sentry_create(this, FALSE)) {
8094 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
8095 istreambuf_iterator_wchar first={0}, last={0};
8097 first.strbuf = strbuf;
8098 num_get_wchar_get_bool(numget, &last, first, last, &base->base, &state, v);
8100 basic_istream_short_sentry_destroy(this);
8102 basic_ios_short_setstate(base, state);
8103 return this;
8106 /* ??$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 */
8107 /* ??$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 */
8108 basic_istream_wchar* __cdecl basic_istream_short_getline_bstr_delim(
8109 basic_istream_wchar *istream, basic_string_wchar *str, wchar_t delim)
8111 basic_ios_wchar *base = basic_istream_short_get_basic_ios(istream);
8112 IOSB_iostate state = IOSTATE_goodbit;
8113 int c = delim;
8115 TRACE("(%p %p %s)\n", istream, str, debugstr_wn(&delim, 1));
8117 MSVCP_basic_string_wchar_clear(str);
8118 if(basic_istream_short_sentry_create(istream, TRUE)) {
8119 basic_streambuf_wchar *strbuf = basic_ios_short_rdbuf_get(base);
8121 c = basic_streambuf_wchar_sgetc(strbuf);
8122 for(; c!=delim && c!=WEOF; c = basic_streambuf_wchar_snextc(strbuf))
8123 MSVCP_basic_string_wchar_append_ch(str, c);
8124 if(c==delim) basic_streambuf_wchar_sbumpc(strbuf);
8125 else if(c==WEOF) state |= IOSTATE_eofbit;
8127 if(!MSVCP_basic_string_wchar_length(str) && c!=delim) state |= IOSTATE_failbit;
8129 basic_istream_short_sentry_destroy(istream);
8131 basic_ios_short_setstate(basic_istream_short_get_basic_ios(istream), state);
8132 return istream;
8135 /* ??$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 */
8136 /* ??$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 */
8137 basic_istream_wchar* __cdecl basic_istream_short_getline_bstr(
8138 basic_istream_wchar *istream, basic_string_wchar *str)
8140 return basic_istream_short_getline_bstr_delim(istream, str, '\n');
8143 /* ??$?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 */
8144 /* ??$?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 */
8145 basic_istream_wchar* __cdecl basic_istream_short_read_bstr(
8146 basic_istream_wchar *istream, basic_string_wchar *str)
8148 basic_ios_wchar *base = basic_istream_short_get_basic_ios(istream);
8149 const ctype_wchar *ctype = ctype_short_use_facet(IOS_LOCALE(base->strbuf));
8150 IOSB_iostate state = IOSTATE_failbit;
8151 int c = '\n';
8153 TRACE("(%p %p)\n", istream, str);
8155 if(basic_istream_short_sentry_create(istream, FALSE)) {
8156 size_t count = ios_base_width_get(&base->base);
8158 if(!count)
8159 count = -1;
8161 MSVCP_basic_string_wchar_clear(str);
8163 for(c = basic_streambuf_wchar_sgetc(basic_ios_short_rdbuf_get(base));
8164 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
8165 c = basic_streambuf_wchar_snextc(basic_ios_short_rdbuf_get(base)), count--) {
8166 state = IOSTATE_goodbit;
8167 MSVCP_basic_string_wchar_append_ch(str, c);
8170 basic_istream_short_sentry_destroy(istream);
8172 ios_base_width_set(&base->base, 0);
8173 basic_ios_short_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8174 return istream;
8177 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@PAG@Z */
8178 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@PEAG@Z */
8179 basic_istream_wchar* __cdecl basic_istream_short_read_str(basic_istream_wchar *istream, wchar_t *str)
8181 basic_ios_wchar *base = basic_istream_short_get_basic_ios(istream);
8182 const ctype_wchar *ctype = ctype_short_use_facet(IOS_LOCALE(base->strbuf));
8183 IOSB_iostate state = IOSTATE_failbit;
8184 unsigned short c = '\n';
8186 TRACE("(%p %p)\n", istream, str);
8188 if(basic_istream_short_sentry_create(istream, FALSE)) {
8189 size_t count = ios_base_width_get(&base->base)-1;
8191 for(c = basic_streambuf_wchar_sgetc(basic_ios_short_rdbuf_get(base));
8192 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
8193 c = basic_streambuf_wchar_snextc(basic_ios_short_rdbuf_get(base)), count--) {
8194 state = IOSTATE_goodbit;
8195 *str++ = c;
8198 basic_istream_short_sentry_destroy(istream);
8200 *str = 0;
8201 ios_base_width_set(&base->base, 0);
8202 basic_ios_short_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8203 return istream;
8206 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAG@Z */
8207 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAG@Z */
8208 basic_istream_wchar* __cdecl basic_istream_short_read_ch(basic_istream_wchar *istream, wchar_t *ch)
8210 IOSB_iostate state = IOSTATE_failbit;
8211 unsigned short c = 0;
8213 TRACE("(%p %p)\n", istream, ch);
8215 if(basic_istream_short_sentry_create(istream, FALSE)) {
8216 c = basic_streambuf_wchar_sbumpc(basic_ios_short_rdbuf_get(
8217 basic_istream_short_get_basic_ios(istream)));
8218 if(c != WEOF) {
8219 state = IOSTATE_goodbit;
8220 *ch = c;
8223 basic_istream_short_sentry_destroy(istream);
8225 basic_ios_short_setstate(basic_istream_short_get_basic_ios(istream),
8226 state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8227 return istream;
8230 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
8231 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
8232 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_streambuf, 8)
8233 basic_istream_wchar* __thiscall basic_istream_short_read_streambuf(
8234 basic_istream_wchar *this, basic_streambuf_wchar *streambuf)
8236 basic_ios_wchar *base = basic_istream_short_get_basic_ios(this);
8237 IOSB_iostate state = IOSTATE_failbit;
8238 unsigned short c = '\n';
8240 TRACE("(%p %p)\n", this, streambuf);
8242 if(basic_istream_short_sentry_create(this, FALSE)) {
8243 for(c = basic_streambuf_wchar_sgetc(basic_ios_short_rdbuf_get(base)); c!=WEOF;
8244 c = basic_streambuf_wchar_snextc(basic_ios_short_rdbuf_get(base))) {
8245 state = IOSTATE_goodbit;
8246 if(basic_streambuf_wchar_sputc(streambuf, c) == WEOF)
8247 break;
8250 basic_istream_short_sentry_destroy(this);
8252 basic_ios_short_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8253 return this;
8256 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
8257 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
8258 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_func, 8)
8259 basic_istream_wchar* __thiscall basic_istream_short_read_func(basic_istream_wchar *this,
8260 basic_istream_wchar* (__cdecl *pfunc)(basic_istream_wchar*))
8262 TRACE("(%p %p)\n", this, pfunc);
8263 pfunc(this);
8264 return this;
8267 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
8268 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
8269 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_func_basic_ios, 8)
8270 basic_istream_wchar* __thiscall basic_istream_short_read_func_basic_ios(basic_istream_wchar *this,
8271 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
8273 TRACE("(%p %p)\n", this, pfunc);
8274 pfunc(basic_istream_short_get_basic_ios(this));
8275 return this;
8278 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
8279 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
8280 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_func_ios_base, 8)
8281 basic_istream_wchar* __thiscall basic_istream_short_read_func_ios_base(
8282 basic_istream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
8284 TRACE("(%p %p)\n", this, pfunc);
8285 pfunc(&basic_istream_short_get_basic_ios(this)->base);
8286 return this;
8289 static inline basic_ios_char* basic_iostream_char_to_basic_ios(basic_iostream_char *ptr)
8291 return (basic_ios_char*)((char*)ptr+basic_iostream_char_vbtable1[1]);
8294 static inline basic_iostream_char* basic_iostream_char_from_basic_ios(basic_ios_char *ptr)
8296 return (basic_iostream_char*)((char*)ptr-basic_iostream_char_vbtable1[1]);
8299 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
8300 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
8301 DEFINE_THISCALL_WRAPPER(basic_iostream_char_ctor, 12)
8302 basic_iostream_char* __thiscall basic_iostream_char_ctor(basic_iostream_char *this, basic_streambuf_char *strbuf, bool virt_init)
8304 basic_ios_char *basic_ios;
8306 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
8308 if(virt_init) {
8309 this->base1.vbtable = basic_iostream_char_vbtable1;
8310 this->base2.vbtable = basic_iostream_char_vbtable2;
8311 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
8312 basic_ios_char_ctor(basic_ios);
8313 }else {
8314 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
8317 basic_ios->base.vtable = &basic_iostream_char_vtable;
8319 basic_istream_char_ctor(&this->base1, strbuf, FALSE, FALSE);
8320 basic_ostream_char_ctor(&this->base2, NULL, FALSE, FALSE, FALSE);
8321 return this;
8324 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
8325 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
8326 DEFINE_THISCALL_WRAPPER(basic_iostream_char_dtor, 4)
8327 void __thiscall basic_iostream_char_dtor(basic_ios_char *base)
8329 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
8331 TRACE("(%p)\n", this);
8332 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base2));
8333 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base1));
8336 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8337 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8338 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vbase_dtor, 4)
8339 void __thiscall basic_iostream_char_vbase_dtor(basic_iostream_char *this)
8341 TRACE("(%p)\n", this);
8342 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(this));
8343 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base1));
8346 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vector_dtor, 8)
8347 basic_iostream_char* __thiscall basic_iostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
8349 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
8351 TRACE("(%p %x)\n", this, flags);
8353 if(flags & 2) {
8354 /* we have an array, with the number of elements stored before the first object */
8355 INT_PTR i, *ptr = (INT_PTR *)this-1;
8357 for(i=*ptr-1; i>=0; i--)
8358 basic_iostream_char_vbase_dtor(this+i);
8359 operator_delete(ptr);
8360 } else {
8361 basic_iostream_char_vbase_dtor(this);
8362 if(flags & 1)
8363 operator_delete(this);
8366 return this;
8369 static inline basic_ios_wchar* basic_iostream_short_to_basic_ios(basic_iostream_wchar *ptr)
8371 return (basic_ios_wchar*)((char*)ptr+basic_iostream_short_vbtable1[1]);
8374 static inline basic_iostream_wchar* basic_iostream_short_from_basic_ios(basic_ios_wchar *ptr)
8376 return (basic_iostream_wchar*)((char*)ptr-basic_iostream_short_vbtable1[1]);
8379 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
8380 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
8381 DEFINE_THISCALL_WRAPPER(basic_iostream_short_ctor, 12)
8382 basic_iostream_wchar* __thiscall basic_iostream_short_ctor(basic_iostream_wchar *this,
8383 basic_streambuf_wchar *strbuf, bool virt_init)
8385 basic_ios_wchar *basic_ios;
8387 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
8389 if(virt_init) {
8390 this->base1.vbtable = basic_iostream_short_vbtable1;
8391 this->base2.vbtable = basic_iostream_short_vbtable2;
8392 basic_ios = basic_istream_short_get_basic_ios(&this->base1);
8393 basic_ios_short_ctor(basic_ios);
8394 }else {
8395 basic_ios = basic_istream_short_get_basic_ios(&this->base1);
8398 basic_istream_short_ctor(&this->base1, strbuf, FALSE, FALSE);
8399 basic_ostream_short_ctor(&this->base2, NULL, FALSE, FALSE, FALSE);
8401 basic_ios->base.vtable = &basic_iostream_short_vtable;
8402 return this;
8405 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
8406 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
8407 DEFINE_THISCALL_WRAPPER(basic_iostream_short_dtor, 4)
8408 void __thiscall basic_iostream_short_dtor(basic_ios_wchar *base)
8410 basic_iostream_wchar *this = basic_iostream_short_from_basic_ios(base);
8412 TRACE("(%p)\n", this);
8413 basic_ostream_short_dtor(basic_ostream_short_to_basic_ios(&this->base2));
8414 basic_istream_short_dtor(basic_istream_short_to_basic_ios(&this->base1));
8417 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
8418 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
8419 DEFINE_THISCALL_WRAPPER(basic_iostream_short_vbase_dtor, 4)
8420 void __thiscall basic_iostream_short_vbase_dtor(basic_iostream_wchar *this)
8422 TRACE("(%p)\n", this);
8423 basic_iostream_short_dtor(basic_iostream_short_to_basic_ios(this));
8424 basic_ios_short_dtor(basic_istream_short_get_basic_ios(&this->base1));
8427 DEFINE_THISCALL_WRAPPER(basic_iostream_short_vector_dtor, 8)
8428 basic_iostream_wchar* __thiscall basic_iostream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
8430 basic_iostream_wchar *this = basic_iostream_short_from_basic_ios(base);
8432 TRACE("(%p %x)\n", this, flags);
8434 if(flags & 2) {
8435 /* we have an array, with the number of elements stored before the first object */
8436 INT_PTR i, *ptr = (INT_PTR *)this-1;
8438 for(i=*ptr-1; i>=0; i--)
8439 basic_iostream_short_vbase_dtor(this+i);
8440 operator_delete(ptr);
8441 } else {
8442 basic_iostream_short_vbase_dtor(this);
8443 if(flags & 1)
8444 operator_delete(this);
8447 return this;
8450 static inline basic_ios_char* basic_ofstream_char_to_basic_ios(basic_ofstream_char *ptr)
8452 return (basic_ios_char*)((char*)ptr+basic_ofstream_char_vbtable[1]);
8455 static inline basic_ofstream_char* basic_ofstream_char_from_basic_ios(basic_ios_char *ptr)
8457 return (basic_ofstream_char*)((char*)ptr-basic_ofstream_char_vbtable[1]);
8460 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
8461 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
8462 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor, 8)
8463 basic_ofstream_char* __thiscall basic_ofstream_char_ctor(basic_ofstream_char *this, bool virt_init)
8465 basic_ios_char *basic_ios;
8467 TRACE("(%p %d)\n", this, virt_init);
8469 if(virt_init) {
8470 this->base.vbtable = basic_ofstream_char_vbtable;
8471 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8472 basic_ios_char_ctor(basic_ios);
8473 }else {
8474 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8477 basic_filebuf_char_ctor(&this->filebuf);
8478 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, TRUE, FALSE);
8479 basic_ios->base.vtable = &basic_ofstream_char_vtable;
8480 return this;
8483 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@ABV01@@Z */
8484 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@AEBV01@@Z */
8485 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_copy_ctor, 12)
8486 basic_ofstream_char* __thiscall basic_ofstream_char_copy_ctor(basic_ofstream_char *this,
8487 basic_ofstream_char *copy, bool virt_init)
8489 basic_ios_char *basic_ios;
8491 TRACE("(%p %p %d)\n", this, copy, virt_init);
8493 if(virt_init) {
8494 this->base.vbtable = basic_ofstream_char_vbtable;
8495 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8496 basic_ios_char_ctor(basic_ios);
8497 }else {
8498 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8501 basic_filebuf_char_ctor_file(&this->filebuf, copy->filebuf.file);
8502 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, TRUE, FALSE);
8503 basic_ios->base.vtable = &basic_ofstream_char_vtable;
8504 return this;
8507 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z */
8508 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z */
8509 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name, 16)
8510 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name(basic_ofstream_char *this,
8511 const char *name, int mode, bool virt_init)
8513 TRACE("(%p %s %d %d)\n", this, name, mode, virt_init);
8515 basic_ofstream_char_ctor(this, virt_init);
8517 if(!basic_filebuf_char_open_mode(&this->filebuf, name, mode|OPENMODE_out)) {
8518 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8519 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8521 return this;
8524 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
8525 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
8526 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_dtor, 4)
8527 void __thiscall basic_ofstream_char_dtor(basic_ios_char *base)
8529 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
8531 TRACE("(%p)\n", this);
8533 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
8534 basic_filebuf_char_dtor(&this->filebuf);
8537 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8538 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8539 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vbase_dtor, 4)
8540 void __thiscall basic_ofstream_char_vbase_dtor(basic_ofstream_char *this)
8542 TRACE("(%p)\n", this);
8544 basic_ofstream_char_dtor(basic_ofstream_char_to_basic_ios(this));
8545 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
8548 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vector_dtor, 8)
8549 basic_ofstream_char* __thiscall basic_ofstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
8551 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
8553 TRACE("(%p %x)\n", this, flags);
8555 if(flags & 2) {
8556 /* we have an array, with the number of elements stored before the first object */
8557 INT_PTR i, *ptr = (INT_PTR *)this-1;
8559 for(i=*ptr-1; i>=0; i--)
8560 basic_ofstream_char_vbase_dtor(this+i);
8561 operator_delete(ptr);
8562 } else {
8563 basic_ofstream_char_vbase_dtor(this);
8564 if(flags & 1)
8565 operator_delete(this);
8568 return this;
8571 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8572 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8573 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_close, 4)
8574 void __thiscall basic_ofstream_char_close(basic_ofstream_char *this)
8576 TRACE("(%p)\n", this);
8578 if(!basic_filebuf_char_close(&this->filebuf)) {
8579 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8580 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8584 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
8585 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
8586 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_is_open, 4)
8587 bool __thiscall basic_ofstream_char_is_open(const basic_ofstream_char *this)
8589 TRACE("(%p)\n", this);
8590 return basic_filebuf_char_is_open(&this->filebuf);
8593 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDH@Z */
8594 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDH@Z */
8595 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open, 12)
8596 void __thiscall basic_ofstream_char_open(basic_ofstream_char *this,
8597 const char *name, int mode)
8599 TRACE("(%p %s %d)\n", this, name, mode);
8601 if(!basic_filebuf_char_open_mode(&this->filebuf, name, mode|OPENMODE_out)) {
8602 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8603 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8607 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDF@Z */
8608 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDF@Z */
8609 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_old, 12)
8610 void __thiscall basic_ofstream_char_open_old(basic_ofstream_char *this,
8611 const char *name, short mode)
8613 basic_ofstream_char_open(this, name, mode);
8616 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
8617 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
8618 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_rdbuf, 4)
8619 basic_filebuf_char* __thiscall basic_ofstream_char_rdbuf(const basic_ofstream_char *this)
8621 TRACE("(%p)\n", this);
8622 return (basic_filebuf_char*)&this->filebuf;
8625 static inline basic_ios_wchar* basic_ofstream_short_to_basic_ios(basic_ofstream_wchar *ptr)
8627 return (basic_ios_wchar*)((char*)ptr+basic_ofstream_short_vbtable[1]);
8630 static inline basic_ofstream_wchar* basic_ofstream_short_from_basic_ios(basic_ios_wchar *ptr)
8632 return (basic_ofstream_wchar*)((char*)ptr-basic_ofstream_short_vbtable[1]);
8635 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
8636 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
8637 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor, 8)
8638 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor(basic_ofstream_wchar *this, bool virt_init)
8640 basic_ios_wchar *basic_ios;
8642 TRACE("(%p %d)\n", this, virt_init);
8644 if(virt_init) {
8645 this->base.vbtable = basic_ofstream_short_vbtable;
8646 basic_ios = basic_ostream_short_get_basic_ios(&this->base);
8647 basic_ios_short_ctor(basic_ios);
8648 }else {
8649 basic_ios = basic_ostream_short_get_basic_ios(&this->base);
8652 basic_filebuf_short_ctor(&this->filebuf);
8653 basic_ostream_short_ctor(&this->base, &this->filebuf.base, FALSE, TRUE, FALSE);
8654 basic_ios->base.vtable = &basic_ofstream_short_vtable;
8655 return this;
8658 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@ABV01@@Z */
8659 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@AEBV01@@Z */
8660 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_copy_ctor, 12)
8661 basic_ofstream_wchar* __thiscall basic_ofstream_short_copy_ctor(basic_ofstream_wchar *this,
8662 basic_ofstream_wchar *copy, bool virt_init)
8664 basic_ios_wchar *basic_ios;
8666 TRACE("(%p %p %d)\n", this, copy, virt_init);
8668 if(virt_init) {
8669 this->base.vbtable = basic_ofstream_short_vbtable;
8670 basic_ios = basic_ostream_short_get_basic_ios(&this->base);
8671 basic_ios_short_ctor(basic_ios);
8672 }else {
8673 basic_ios = basic_ostream_short_get_basic_ios(&this->base);
8676 basic_filebuf_short_ctor_file(&this->filebuf, copy->filebuf.file);
8677 basic_ostream_short_ctor(&this->base, &this->filebuf.base, FALSE, TRUE, FALSE);
8678 basic_ios->base.vtable = &basic_ofstream_short_vtable;
8679 return this;
8682 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBDH@Z */
8683 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDH@Z */
8684 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_name, 16)
8685 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_name(basic_ofstream_wchar *this,
8686 const char *name, int mode, bool virt_init)
8688 TRACE("(%p %s %d %d)\n", this, name, mode, virt_init);
8690 basic_ofstream_short_ctor(this, virt_init);
8692 if(!basic_filebuf_short_open_mode(&this->filebuf, name, mode|OPENMODE_out)) {
8693 basic_ios_wchar *basic_ios = basic_ostream_short_get_basic_ios(&this->base);
8694 basic_ios_short_setstate(basic_ios, IOSTATE_failbit);
8696 return this;
8699 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
8700 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
8701 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_dtor, 4)
8702 void __thiscall basic_ofstream_short_dtor(basic_ios_wchar *base)
8704 basic_ofstream_wchar *this = basic_ofstream_short_from_basic_ios(base);
8706 TRACE("(%p)\n", this);
8708 basic_ostream_short_dtor(basic_ostream_short_to_basic_ios(&this->base));
8709 basic_filebuf_short_dtor(&this->filebuf);
8712 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
8713 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
8714 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_vbase_dtor, 4)
8715 void __thiscall basic_ofstream_short_vbase_dtor(basic_ofstream_wchar *this)
8717 TRACE("(%p)\n", this);
8719 basic_ofstream_short_dtor(basic_ofstream_short_to_basic_ios(this));
8720 basic_ios_short_dtor(basic_ostream_short_get_basic_ios(&this->base));
8723 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_vector_dtor, 8)
8724 basic_ofstream_wchar* __thiscall basic_ofstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
8726 basic_ofstream_wchar *this = basic_ofstream_short_from_basic_ios(base);
8728 TRACE("(%p %x)\n", this, flags);
8730 if(flags & 2) {
8731 /* we have an array, with the number of elements stored before the first object */
8732 INT_PTR i, *ptr = (INT_PTR *)this-1;
8734 for(i=*ptr-1; i>=0; i--)
8735 basic_ofstream_short_vbase_dtor(this+i);
8736 operator_delete(ptr);
8737 } else {
8738 basic_ofstream_short_vbase_dtor(this);
8739 if(flags & 1)
8740 operator_delete(this);
8743 return this;
8746 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
8747 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
8748 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_close, 4)
8749 void __thiscall basic_ofstream_short_close(basic_ofstream_wchar *this)
8751 TRACE("(%p)\n", this);
8753 if(!basic_filebuf_short_close(&this->filebuf)) {
8754 basic_ios_wchar *basic_ios = basic_ostream_short_get_basic_ios(&this->base);
8755 basic_ios_short_setstate(basic_ios, IOSTATE_failbit);
8759 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
8760 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
8761 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_is_open, 4)
8762 bool __thiscall basic_ofstream_short_is_open(const basic_ofstream_wchar *this)
8764 TRACE("(%p)\n", this);
8765 return basic_filebuf_short_is_open(&this->filebuf);
8768 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDH@Z */
8769 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDH@Z */
8770 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_open, 12)
8771 void __thiscall basic_ofstream_short_open(basic_ofstream_wchar *this,
8772 const char *name, int mode)
8774 TRACE("(%p %s %d)\n", this, name, mode);
8776 if(!basic_filebuf_short_open_mode(&this->filebuf, name, mode|OPENMODE_out)) {
8777 basic_ios_wchar *basic_ios = basic_ostream_short_get_basic_ios(&this->base);
8778 basic_ios_short_setstate(basic_ios, IOSTATE_failbit);
8782 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDF@Z */
8783 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDF@Z */
8784 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_open_old, 12)
8785 void __thiscall basic_ofstream_short_open_old(basic_ofstream_wchar *this,
8786 const char *name, int mode)
8788 basic_ofstream_short_open(this, name, mode);
8791 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
8792 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
8793 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_rdbuf, 4)
8794 basic_filebuf_wchar* __thiscall basic_ofstream_short_rdbuf(const basic_ofstream_wchar *this)
8796 TRACE("(%p)\n", this);
8797 return (basic_filebuf_wchar*)&this->filebuf;
8800 static inline basic_ios_char* basic_ifstream_char_to_basic_ios(basic_ifstream_char *ptr)
8802 return (basic_ios_char*)((char*)ptr+basic_ifstream_char_vbtable[1]);
8805 static inline basic_ifstream_char* basic_ifstream_char_from_basic_ios(basic_ios_char *ptr)
8807 return (basic_ifstream_char*)((char*)ptr-basic_ifstream_char_vbtable[1]);
8810 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
8811 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
8812 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor, 8)
8813 basic_ifstream_char* __thiscall basic_ifstream_char_ctor(basic_ifstream_char *this, bool virt_init)
8815 basic_ios_char *basic_ios;
8817 TRACE("(%p %d)\n", this, virt_init);
8819 if(virt_init) {
8820 this->base.vbtable = basic_ifstream_char_vbtable;
8821 basic_ios = basic_istream_char_get_basic_ios(&this->base);
8822 basic_ios_char_ctor(basic_ios);
8823 }else {
8824 basic_ios = basic_istream_char_get_basic_ios(&this->base);
8827 basic_filebuf_char_ctor(&this->filebuf);
8828 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
8829 basic_ios->base.vtable = &basic_ifstream_char_vtable;
8830 return this;
8833 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@ABV01@@Z */
8834 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@AEBV01@@Z */
8835 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_copy_ctor, 12)
8836 basic_ifstream_char* __thiscall basic_ifstream_char_copy_ctor(basic_ifstream_char *this,
8837 const basic_ifstream_char *copy, bool virt_init)
8839 basic_ios_char *basic_ios;
8841 TRACE("(%p %p %d)\n", this, copy, virt_init);
8843 if(virt_init) {
8844 this->base.vbtable = basic_ifstream_char_vbtable;
8845 basic_ios = basic_istream_char_get_basic_ios(&this->base);
8846 basic_ios_char_ctor(basic_ios);
8847 }else {
8848 basic_ios = basic_istream_char_get_basic_ios(&this->base);
8851 basic_filebuf_char_ctor_file(&this->filebuf, copy->filebuf.file);
8852 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
8853 basic_ios->base.vtable = &basic_ifstream_char_vtable;
8854 return this;
8857 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z */
8858 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z */
8859 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name, 16)
8860 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name(basic_ifstream_char *this,
8861 const char *name, int mode, bool virt_init)
8863 TRACE("(%p %s %d %d)\n", this, name, mode, virt_init);
8865 basic_ifstream_char_ctor(this, virt_init);
8867 if(!basic_filebuf_char_open_mode(&this->filebuf, name, mode|OPENMODE_in)) {
8868 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
8869 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8871 return this;
8874 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
8875 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
8876 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_dtor, 4)
8877 void __thiscall basic_ifstream_char_dtor(basic_ios_char *base)
8879 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
8881 TRACE("(%p)\n", this);
8883 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
8884 basic_filebuf_char_dtor(&this->filebuf);
8887 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8888 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8889 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vbase_dtor, 4)
8890 void __thiscall basic_ifstream_char_vbase_dtor(basic_ifstream_char *this)
8892 TRACE("(%p)\n", this);
8894 basic_ifstream_char_dtor(basic_ifstream_char_to_basic_ios(this));
8895 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base));
8898 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vector_dtor, 8)
8899 basic_ifstream_char* __thiscall basic_ifstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
8901 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
8903 TRACE("(%p %x)\n", this, flags);
8905 if(flags & 2) {
8906 /* we have an array, with the number of elements stored before the first object */
8907 INT_PTR i, *ptr = (INT_PTR *)this-1;
8909 for(i=*ptr-1; i>=0; i--)
8910 basic_ifstream_char_vbase_dtor(this+i);
8911 operator_delete(ptr);
8912 } else {
8913 basic_ifstream_char_vbase_dtor(this);
8914 if(flags & 1)
8915 operator_delete(this);
8918 return this;
8921 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8922 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8923 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_close, 4)
8924 void __thiscall basic_ifstream_char_close(basic_ifstream_char *this)
8926 TRACE("(%p)\n", this);
8928 if(!basic_filebuf_char_close(&this->filebuf)) {
8929 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
8930 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8934 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
8935 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
8936 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_is_open, 4)
8937 bool __thiscall basic_ifstream_char_is_open(const basic_ifstream_char *this)
8939 TRACE("(%p)\n", this);
8940 return basic_filebuf_char_is_open(&this->filebuf);
8943 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDH@Z */
8944 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDH@Z */
8945 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open, 12)
8946 void __thiscall basic_ifstream_char_open(basic_ifstream_char *this,
8947 const char *name, int mode)
8949 TRACE("(%p %s %d)\n", this, name, mode);
8951 if(!basic_filebuf_char_open_mode(&this->filebuf, name, mode|OPENMODE_in)) {
8952 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
8953 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8957 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDF@Z */
8958 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDF@Z */
8959 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_old, 12)
8960 void __thiscall basic_ifstream_char_open_old(basic_ifstream_char *this,
8961 const char *name, short mode)
8963 basic_ifstream_char_open(this, name, mode);
8966 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
8967 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
8968 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_rdbuf, 4)
8969 basic_filebuf_char* __thiscall basic_ifstream_char_rdbuf(const basic_ifstream_char *this)
8971 TRACE("(%p)\n", this);
8972 return (basic_filebuf_char*)&this->filebuf;
8975 static inline basic_ios_wchar* basic_ifstream_short_to_basic_ios(basic_ifstream_wchar *ptr)
8977 return (basic_ios_wchar*)((char*)ptr+basic_ifstream_short_vbtable[1]);
8980 static inline basic_ifstream_wchar* basic_ifstream_short_from_basic_ios(basic_ios_wchar *ptr)
8982 return (basic_ifstream_wchar*)((char*)ptr-basic_ifstream_short_vbtable[1]);
8985 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
8986 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
8987 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor, 8)
8988 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor(basic_ifstream_wchar *this, bool virt_init)
8990 basic_ios_wchar *basic_ios;
8992 TRACE("(%p %d)\n", this, virt_init);
8994 if(virt_init) {
8995 this->base.vbtable = basic_ifstream_short_vbtable;
8996 basic_ios = basic_istream_short_get_basic_ios(&this->base);
8997 basic_ios_short_ctor(basic_ios);
8998 }else {
8999 basic_ios = basic_istream_short_get_basic_ios(&this->base);
9002 basic_filebuf_short_ctor(&this->filebuf);
9003 basic_istream_short_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
9004 basic_ios->base.vtable = &basic_ifstream_short_vtable;
9005 return this;
9008 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@ABV01@@Z */
9009 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@AEBV01@@Z */
9010 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_copy_ctor, 12)
9011 basic_ifstream_wchar* __thiscall basic_ifstream_short_copy_ctor(basic_ifstream_wchar *this,
9012 basic_ifstream_wchar *copy, bool virt_init)
9014 basic_ios_wchar *basic_ios;
9016 TRACE("(%p %p %d)\n", this, copy, virt_init);
9018 if(virt_init) {
9019 this->base.vbtable = basic_ifstream_short_vbtable;
9020 basic_ios = basic_istream_short_get_basic_ios(&this->base);
9021 basic_ios_short_ctor(basic_ios);
9022 }else {
9023 basic_ios = basic_istream_short_get_basic_ios(&this->base);
9026 basic_filebuf_short_ctor_file(&this->filebuf, copy->filebuf.file);
9027 basic_istream_short_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
9028 basic_ios->base.vtable = &basic_ifstream_short_vtable;
9029 return this;
9032 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBDH@Z */
9033 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDH@Z */
9034 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name, 16)
9035 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name(basic_ifstream_wchar *this,
9036 const char *name, int mode, bool virt_init)
9038 TRACE("(%p %s %d %d)\n", this, name, mode, virt_init);
9040 basic_ifstream_short_ctor(this, virt_init);
9042 if(!basic_filebuf_short_open_mode(&this->filebuf, name, mode|OPENMODE_in)) {
9043 basic_ios_wchar *basic_ios = basic_istream_short_get_basic_ios(&this->base);
9044 basic_ios_short_setstate(basic_ios, IOSTATE_failbit);
9046 return this;
9049 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
9050 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
9051 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_dtor, 4)
9052 void __thiscall basic_ifstream_short_dtor(basic_ios_wchar *base)
9054 basic_ifstream_wchar *this = basic_ifstream_short_from_basic_ios(base);
9056 TRACE("(%p)\n", this);
9058 basic_istream_short_dtor(basic_istream_short_to_basic_ios(&this->base));
9059 basic_filebuf_short_dtor(&this->filebuf);
9062 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9063 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9064 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_vbase_dtor, 4)
9065 void __thiscall basic_ifstream_short_vbase_dtor(basic_ifstream_wchar *this)
9067 TRACE("(%p)\n", this);
9069 basic_ifstream_short_dtor(basic_ifstream_short_to_basic_ios(this));
9070 basic_ios_short_dtor(basic_istream_short_get_basic_ios(&this->base));
9073 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_vector_dtor, 8)
9074 basic_ifstream_wchar* __thiscall basic_ifstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
9076 basic_ifstream_wchar *this = basic_ifstream_short_from_basic_ios(base);
9078 TRACE("(%p %x)\n", this, flags);
9080 if(flags & 2) {
9081 /* we have an array, with the number of elements stored before the first object */
9082 INT_PTR i, *ptr = (INT_PTR *)this-1;
9084 for(i=*ptr-1; i>=0; i--)
9085 basic_ifstream_short_vbase_dtor(this+i);
9086 operator_delete(ptr);
9087 } else {
9088 basic_ifstream_short_vbase_dtor(this);
9089 if(flags & 1)
9090 operator_delete(this);
9093 return this;
9096 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9097 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9098 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_close, 4)
9099 void __thiscall basic_ifstream_short_close(basic_ifstream_wchar *this)
9101 TRACE("(%p)\n", this);
9103 if(!basic_filebuf_short_close(&this->filebuf)) {
9104 basic_ios_wchar *basic_ios = basic_istream_short_get_basic_ios(&this->base);
9105 basic_ios_short_setstate(basic_ios, IOSTATE_failbit);
9109 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
9110 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
9111 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_is_open, 4)
9112 bool __thiscall basic_ifstream_short_is_open(const basic_ifstream_wchar *this)
9114 TRACE("(%p)\n", this);
9115 return basic_filebuf_short_is_open(&this->filebuf);
9118 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDH@Z */
9119 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDH@Z */
9120 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_open, 12)
9121 void __thiscall basic_ifstream_short_open(basic_ifstream_wchar *this,
9122 const char *name, int mode)
9124 TRACE("(%p %s %d)\n", this, name, mode);
9126 if(!basic_filebuf_short_open_mode(&this->filebuf, name, mode|OPENMODE_in)) {
9127 basic_ios_wchar *basic_ios = basic_istream_short_get_basic_ios(&this->base);
9128 basic_ios_short_setstate(basic_ios, IOSTATE_failbit);
9132 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDF@Z */
9133 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDF@Z */
9134 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_open_old, 12)
9135 void __thiscall basic_ifstream_short_open_old(basic_ifstream_wchar *this,
9136 const char *name, short mode)
9138 basic_ifstream_short_open(this, name, mode);
9141 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
9142 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
9143 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_rdbuf, 4)
9144 basic_filebuf_wchar* __thiscall basic_ifstream_short_rdbuf(const basic_ifstream_wchar *this)
9146 TRACE("(%p)\n", this);
9147 return (basic_filebuf_wchar*)&this->filebuf;
9150 static inline basic_ios_char* basic_fstream_char_to_basic_ios(basic_fstream_char *ptr)
9152 return (basic_ios_char*)((char*)ptr+basic_fstream_char_vbtable1[1]);
9155 static inline basic_fstream_char* basic_fstream_char_from_basic_ios(basic_ios_char *ptr)
9157 return (basic_fstream_char*)((char*)ptr-basic_fstream_char_vbtable1[1]);
9160 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
9161 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
9162 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor, 8)
9163 basic_fstream_char* __thiscall basic_fstream_char_ctor(basic_fstream_char *this, bool virt_init)
9165 basic_ios_char *basic_ios;
9167 TRACE("(%p %d)\n", this, virt_init);
9169 if(virt_init) {
9170 this->base.base1.vbtable = basic_fstream_char_vbtable1;
9171 this->base.base2.vbtable = basic_fstream_char_vbtable2;
9172 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
9173 basic_ios_char_ctor(basic_ios);
9174 }else {
9175 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
9178 basic_filebuf_char_ctor(&this->filebuf);
9179 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
9180 basic_ios->base.vtable = &basic_fstream_char_vtable;
9181 return this;
9184 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@ABV01@@Z */
9185 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@AEBV01@@Z */
9186 DEFINE_THISCALL_WRAPPER(basic_fstream_char_copy_ctor, 12)
9187 basic_fstream_char* __thiscall basic_fstream_char_copy_ctor(basic_fstream_char *this,
9188 basic_fstream_char *copy, bool virt_init)
9190 basic_ios_char *basic_ios;
9192 TRACE("(%p %p %d)\n", this, copy, virt_init);
9194 if(virt_init) {
9195 this->base.base1.vbtable = basic_fstream_char_vbtable1;
9196 this->base.base2.vbtable = basic_fstream_char_vbtable2;
9197 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
9198 basic_ios_char_ctor(basic_ios);
9199 }else {
9200 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
9203 basic_filebuf_char_ctor_file(&this->filebuf, copy->filebuf.file);
9204 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
9205 basic_ios->base.vtable = &basic_fstream_char_vtable;
9206 return this;
9209 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z */
9210 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z */
9211 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name, 16)
9212 basic_fstream_char* __thiscall basic_fstream_char_ctor_name(basic_fstream_char *this,
9213 const char *name, int mode, bool virt_init)
9215 TRACE("(%p %s %d %d)\n", this, name, mode, virt_init);
9217 basic_fstream_char_ctor(this, virt_init);
9219 if(!basic_filebuf_char_open_mode(&this->filebuf, name, mode)) {
9220 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
9221 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
9223 return this;
9226 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
9227 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
9228 DEFINE_THISCALL_WRAPPER(basic_fstream_char_dtor, 4)
9229 void __thiscall basic_fstream_char_dtor(basic_ios_char *base)
9231 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
9233 TRACE("(%p)\n", this);
9235 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
9236 basic_filebuf_char_dtor(&this->filebuf);
9239 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
9240 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
9241 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vbase_dtor, 4)
9242 void __thiscall basic_fstream_char_vbase_dtor(basic_fstream_char *this)
9244 TRACE("(%p)\n", this);
9246 basic_fstream_char_dtor(basic_fstream_char_to_basic_ios(this));
9247 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
9250 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vector_dtor, 8)
9251 basic_fstream_char* __thiscall basic_fstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
9253 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
9255 TRACE("(%p %x)\n", this, flags);
9257 if(flags & 2) {
9258 /* we have an array, with the number of elements stored before the first object */
9259 INT_PTR i, *ptr = (INT_PTR *)this-1;
9261 for(i=*ptr-1; i>=0; i--)
9262 basic_fstream_char_vbase_dtor(this+i);
9263 operator_delete(ptr);
9264 } else {
9265 basic_fstream_char_vbase_dtor(this);
9266 if(flags & 1)
9267 operator_delete(this);
9270 return this;
9273 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
9274 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
9275 DEFINE_THISCALL_WRAPPER(basic_fstream_char_close, 4)
9276 void __thiscall basic_fstream_char_close(basic_fstream_char *this)
9278 TRACE("(%p)\n", this);
9280 if(!basic_filebuf_char_close(&this->filebuf)) {
9281 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
9282 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
9286 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
9287 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
9288 DEFINE_THISCALL_WRAPPER(basic_fstream_char_is_open, 4)
9289 bool __thiscall basic_fstream_char_is_open(const basic_fstream_char *this)
9291 TRACE("(%p)\n", this);
9292 return basic_filebuf_char_is_open(&this->filebuf);
9295 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDH@Z */
9296 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDH@Z */
9297 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open, 12)
9298 void __thiscall basic_fstream_char_open(basic_fstream_char *this,
9299 const char *name, int mode)
9301 TRACE("(%p %s %d)\n", this, name, mode);
9303 if(!basic_filebuf_char_open_mode(&this->filebuf, name, mode)) {
9304 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
9305 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
9309 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDF@Z */
9310 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDF@Z */
9311 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_old, 12)
9312 void __thiscall basic_fstream_char_open_old(basic_fstream_char *this,
9313 const char *name, int mode)
9315 basic_fstream_char_open(this, name, mode);
9318 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
9319 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
9320 DEFINE_THISCALL_WRAPPER(basic_fstream_char_rdbuf, 4)
9321 basic_filebuf_char* __thiscall basic_fstream_char_rdbuf(const basic_fstream_char *this)
9323 TRACE("(%p)\n", this);
9324 return (basic_filebuf_char*)&this->filebuf;
9327 static inline basic_ios_wchar* basic_fstream_short_to_basic_ios(basic_fstream_wchar *ptr)
9329 return (basic_ios_wchar*)((char*)ptr+basic_fstream_short_vbtable1[1]);
9332 static inline basic_fstream_wchar* basic_fstream_short_from_basic_ios(basic_ios_wchar *ptr)
9334 return (basic_fstream_wchar*)((char*)ptr-basic_fstream_short_vbtable1[1]);
9337 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
9338 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
9339 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor, 8)
9340 basic_fstream_wchar* __thiscall basic_fstream_short_ctor(basic_fstream_wchar *this, bool virt_init)
9342 basic_ios_wchar *basic_ios;
9344 TRACE("(%p %d)\n", this, virt_init);
9346 if(virt_init) {
9347 this->base.base1.vbtable = basic_fstream_short_vbtable1;
9348 this->base.base2.vbtable = basic_fstream_short_vbtable2;
9349 basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
9350 basic_ios_short_ctor(basic_ios);
9351 }else {
9352 basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
9355 basic_filebuf_short_ctor(&this->filebuf);
9356 basic_iostream_short_ctor(&this->base, &this->filebuf.base, FALSE);
9357 basic_ios->base.vtable = &basic_fstream_short_vtable;
9358 return this;
9361 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@ABV01@@Z */
9362 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@AEBV01@@Z */
9363 DEFINE_THISCALL_WRAPPER(basic_fstream_short_copy_ctor, 12)
9364 basic_fstream_wchar* __thiscall basic_fstream_short_copy_ctor(basic_fstream_wchar *this,
9365 basic_fstream_wchar *copy, bool virt_init)
9367 basic_ios_wchar *basic_ios;
9369 TRACE("(%p %p %d)\n", this, copy, virt_init);
9371 if(virt_init) {
9372 this->base.base1.vbtable = basic_fstream_short_vbtable1;
9373 this->base.base2.vbtable = basic_fstream_short_vbtable2;
9374 basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
9375 basic_ios_short_ctor(basic_ios);
9376 }else {
9377 basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
9380 basic_filebuf_short_ctor_file(&this->filebuf, copy->filebuf.file);
9381 basic_iostream_short_ctor(&this->base, &this->filebuf.base, FALSE);
9382 basic_ios->base.vtable = &basic_fstream_short_vtable;
9383 return this;
9386 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
9387 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
9388 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name, 16)
9389 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name(basic_fstream_wchar *this,
9390 const char *name, int mode, bool virt_init)
9392 TRACE("(%p %s %d %d)\n", this, name, mode, virt_init);
9394 basic_fstream_short_ctor(this, virt_init);
9396 if(!basic_filebuf_short_open_mode(&this->filebuf, name, mode)) {
9397 basic_ios_wchar *basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
9398 basic_ios_short_setstate(basic_ios, IOSTATE_failbit);
9400 return this;
9403 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
9404 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
9405 DEFINE_THISCALL_WRAPPER(basic_fstream_short_dtor, 4)
9406 void __thiscall basic_fstream_short_dtor(basic_ios_wchar *base)
9408 basic_fstream_wchar *this = basic_fstream_short_from_basic_ios(base);
9410 TRACE("(%p)\n", this);
9412 basic_iostream_short_dtor(basic_iostream_short_to_basic_ios(&this->base));
9413 basic_filebuf_short_dtor(&this->filebuf);
9416 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9417 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9418 DEFINE_THISCALL_WRAPPER(basic_fstream_short_vbase_dtor, 4)
9419 void __thiscall basic_fstream_short_vbase_dtor(basic_fstream_wchar *this)
9421 TRACE("(%p)\n", this);
9423 basic_fstream_short_dtor(basic_fstream_short_to_basic_ios(this));
9424 basic_ios_short_dtor(basic_istream_short_get_basic_ios(&this->base.base1));
9427 DEFINE_THISCALL_WRAPPER(basic_fstream_short_vector_dtor, 8)
9428 basic_fstream_wchar* __thiscall basic_fstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
9430 basic_fstream_wchar *this = basic_fstream_short_from_basic_ios(base);
9432 TRACE("(%p %x)\n", this, flags);
9434 if(flags & 2) {
9435 /* we have an array, with the number of elements stored before the first object */
9436 INT_PTR i, *ptr = (INT_PTR *)this-1;
9438 for(i=*ptr-1; i>=0; i--)
9439 basic_fstream_short_vbase_dtor(this+i);
9440 operator_delete(ptr);
9441 } else {
9442 basic_fstream_short_vbase_dtor(this);
9443 if(flags & 1)
9444 operator_delete(this);
9447 return this;
9450 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9451 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9452 DEFINE_THISCALL_WRAPPER(basic_fstream_short_close, 4)
9453 void __thiscall basic_fstream_short_close(basic_fstream_wchar *this)
9455 TRACE("(%p)\n", this);
9457 if(!basic_filebuf_short_close(&this->filebuf)) {
9458 basic_ios_wchar *basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
9459 basic_ios_short_setstate(basic_ios, IOSTATE_failbit);
9463 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
9464 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
9465 DEFINE_THISCALL_WRAPPER(basic_fstream_short_is_open, 4)
9466 bool __thiscall basic_fstream_short_is_open(const basic_fstream_wchar *this)
9468 TRACE("(%p)\n", this);
9469 return basic_filebuf_short_is_open(&this->filebuf);
9472 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBDH@Z */
9473 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDH@Z */
9474 DEFINE_THISCALL_WRAPPER(basic_fstream_short_open, 12)
9475 void __thiscall basic_fstream_short_open(basic_fstream_wchar *this,
9476 const char *name, int mode)
9478 TRACE("(%p %s %d)\n", this, name, mode);
9480 if(!basic_filebuf_short_open_mode(&this->filebuf, name, mode)) {
9481 basic_ios_wchar *basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
9482 basic_ios_short_setstate(basic_ios, IOSTATE_failbit);
9486 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDF@Z */
9487 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDF@Z */
9488 DEFINE_THISCALL_WRAPPER(basic_fstream_short_open_old, 12)
9489 void __thiscall basic_fstream_short_open_old(basic_fstream_wchar *this,
9490 const char *name, int mode)
9492 basic_fstream_short_open(this, name, mode);
9495 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
9496 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
9497 DEFINE_THISCALL_WRAPPER(basic_fstream_short_rdbuf, 4)
9498 basic_filebuf_wchar* __thiscall basic_fstream_short_rdbuf(const basic_fstream_wchar *this)
9500 TRACE("(%p)\n", this);
9501 return (basic_filebuf_wchar*)&this->filebuf;
9504 static inline basic_ios_char* basic_ostringstream_char_to_basic_ios(basic_ostringstream_char *ptr)
9506 return (basic_ios_char*)((char*)ptr+basic_ostringstream_char_vbtable[1]);
9509 static inline basic_ostringstream_char* basic_ostringstream_char_from_basic_ios(basic_ios_char *ptr)
9511 return (basic_ostringstream_char*)((char*)ptr-basic_ostringstream_char_vbtable[1]);
9514 /* ??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 */
9515 /* ??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 */
9516 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_str, 16)
9517 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_str(basic_ostringstream_char *this,
9518 const basic_string_char *str, int mode, bool virt_init)
9520 basic_ios_char *basic_ios;
9522 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
9524 if(virt_init) {
9525 this->base.vbtable = basic_ostringstream_char_vbtable;
9526 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9527 basic_ios_char_ctor(basic_ios);
9528 }else {
9529 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9532 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
9533 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, TRUE, FALSE);
9534 basic_ios->base.vtable = &basic_ostringstream_char_vtable;
9535 return this;
9538 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
9539 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
9540 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_mode, 12)
9541 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_mode(
9542 basic_ostringstream_char *this, int mode, bool virt_init)
9544 basic_ios_char *basic_ios;
9546 TRACE("(%p %d %d)\n", this, mode, virt_init);
9548 if(virt_init) {
9549 this->base.vbtable = basic_ostringstream_char_vbtable;
9550 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9551 basic_ios_char_ctor(basic_ios);
9552 }else {
9553 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9556 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_out);
9557 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, TRUE, FALSE);
9558 basic_ios->base.vtable = &basic_ostringstream_char_vtable;
9559 return this;
9562 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
9563 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
9564 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor, 4)
9565 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor(
9566 basic_ostringstream_char *this)
9568 return basic_ostringstream_char_ctor_mode(this, 0, TRUE);
9571 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
9572 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
9573 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_dtor, 4)
9574 void __thiscall basic_ostringstream_char_dtor(basic_ios_char *base)
9576 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
9578 TRACE("(%p)\n", this);
9580 basic_stringbuf_char_dtor(&this->strbuf);
9581 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
9584 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
9585 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
9586 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vbase_dtor, 4)
9587 void __thiscall basic_ostringstream_char_vbase_dtor(basic_ostringstream_char *this)
9589 TRACE("(%p)\n", this);
9591 basic_ostringstream_char_dtor(basic_ostringstream_char_to_basic_ios(this));
9592 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
9595 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vector_dtor, 8)
9596 basic_ostringstream_char* __thiscall basic_ostringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
9598 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
9600 TRACE("(%p %x)\n", this, flags);
9602 if(flags & 2) {
9603 /* we have an array, with the number of elements stored before the first object */
9604 INT_PTR i, *ptr = (INT_PTR *)this-1;
9606 for(i=*ptr-1; i>=0; i--)
9607 basic_ostringstream_char_vbase_dtor(this+i);
9608 operator_delete(ptr);
9609 } else {
9610 basic_ostringstream_char_vbase_dtor(this);
9611 if(flags & 1)
9612 operator_delete(this);
9615 return this;
9618 /* ?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 */
9619 /* ?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 */
9620 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_rdbuf, 4)
9621 basic_stringbuf_char* __thiscall basic_ostringstream_char_rdbuf(const basic_ostringstream_char *this)
9623 TRACE("(%p)\n", this);
9624 return (basic_stringbuf_char*)&this->strbuf;
9627 /* ?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 */
9628 /* ?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 */
9629 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_set, 8)
9630 void __thiscall basic_ostringstream_char_str_set(basic_ostringstream_char *this, const basic_string_char *str)
9632 TRACE("(%p %p)\n", this, str);
9633 basic_stringbuf_char_str_set(&this->strbuf, str);
9636 /* ?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 */
9637 /* ?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 */
9638 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_get, 8)
9639 basic_string_char* __thiscall basic_ostringstream_char_str_get(const basic_ostringstream_char *this, basic_string_char *ret)
9641 TRACE("(%p %p)\n", this, ret);
9642 return basic_stringbuf_char_str_get(&this->strbuf, ret);
9645 static inline basic_ios_wchar* basic_ostringstream_short_to_basic_ios(basic_ostringstream_wchar *ptr)
9647 return (basic_ios_wchar*)((char*)ptr+basic_ostringstream_short_vbtable[1]);
9650 static inline basic_ostringstream_wchar* basic_ostringstream_short_from_basic_ios(basic_ios_wchar *ptr)
9652 return (basic_ostringstream_wchar*)((char*)ptr-basic_ostringstream_short_vbtable[1]);
9655 /* ??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 */
9656 /* ??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 */
9657 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_str, 16)
9658 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_str(basic_ostringstream_wchar *this,
9659 const basic_string_wchar *str, int mode, bool virt_init)
9661 basic_ios_wchar *basic_ios;
9663 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
9665 if(virt_init) {
9666 this->base.vbtable = basic_ostringstream_short_vbtable;
9667 basic_ios = basic_ostream_short_get_basic_ios(&this->base);
9668 basic_ios_short_ctor(basic_ios);
9669 }else {
9670 basic_ios = basic_ostream_short_get_basic_ios(&this->base);
9673 basic_stringbuf_short_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
9674 basic_ostream_short_ctor(&this->base, &this->strbuf.base, FALSE, TRUE, FALSE);
9675 basic_ios->base.vtable = &basic_ostringstream_short_vtable;
9676 return this;
9679 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
9680 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
9681 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_mode, 12)
9682 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_mode(
9683 basic_ostringstream_wchar *this, int mode, bool virt_init)
9685 basic_ios_wchar *basic_ios;
9687 TRACE("(%p %d %d)\n", this, mode, virt_init);
9689 if(virt_init) {
9690 this->base.vbtable = basic_ostringstream_short_vbtable;
9691 basic_ios = basic_ostream_short_get_basic_ios(&this->base);
9692 basic_ios_short_ctor(basic_ios);
9693 }else {
9694 basic_ios = basic_ostream_short_get_basic_ios(&this->base);
9697 basic_stringbuf_short_ctor_mode(&this->strbuf, mode|OPENMODE_out);
9698 basic_ostream_short_ctor(&this->base, &this->strbuf.base, FALSE, TRUE, FALSE);
9699 basic_ios->base.vtable = &basic_ostringstream_short_vtable;
9700 return this;
9703 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
9704 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
9705 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor, 4)
9706 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor(
9707 basic_ostringstream_wchar *this)
9709 return basic_ostringstream_short_ctor_mode(this, 0, TRUE);
9712 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
9713 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
9714 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_dtor, 4)
9715 void __thiscall basic_ostringstream_short_dtor(basic_ios_wchar *base)
9717 basic_ostringstream_wchar *this = basic_ostringstream_short_from_basic_ios(base);
9719 TRACE("(%p)\n", this);
9721 basic_stringbuf_short_dtor(&this->strbuf);
9722 basic_ostream_short_dtor(basic_ostream_short_to_basic_ios(&this->base));
9725 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
9726 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
9727 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_vbase_dtor, 4)
9728 void __thiscall basic_ostringstream_short_vbase_dtor(basic_ostringstream_wchar *this)
9730 TRACE("(%p)\n", this);
9732 basic_ostringstream_short_dtor(basic_ostringstream_short_to_basic_ios(this));
9733 basic_ios_short_dtor(basic_ostream_short_get_basic_ios(&this->base));
9736 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_vector_dtor, 8)
9737 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
9739 basic_ostringstream_wchar *this = basic_ostringstream_short_from_basic_ios(base);
9741 TRACE("(%p %x)\n", this, flags);
9743 if(flags & 2) {
9744 /* we have an array, with the number of elements stored before the first object */
9745 INT_PTR i, *ptr = (INT_PTR *)this-1;
9747 for(i=*ptr-1; i>=0; i--)
9748 basic_ostringstream_short_vbase_dtor(this+i);
9749 operator_delete(ptr);
9750 } else {
9751 basic_ostringstream_short_vbase_dtor(this);
9752 if(flags & 1)
9753 operator_delete(this);
9756 return this;
9759 /* ?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 */
9760 /* ?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 */
9761 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_rdbuf, 4)
9762 basic_stringbuf_wchar* __thiscall basic_ostringstream_short_rdbuf(const basic_ostringstream_wchar *this)
9764 TRACE("(%p)\n", this);
9765 return (basic_stringbuf_wchar*)&this->strbuf;
9768 /* ?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 */
9769 /* ?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 */
9770 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_str_set, 8)
9771 void __thiscall basic_ostringstream_short_str_set(basic_ostringstream_wchar *this, const basic_string_wchar *str)
9773 TRACE("(%p %p)\n", this, str);
9774 basic_stringbuf_short_str_set(&this->strbuf, str);
9777 /* ?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 */
9778 /* ?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 */
9779 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_str_get, 8)
9780 basic_string_wchar* __thiscall basic_ostringstream_short_str_get(const basic_ostringstream_wchar *this, basic_string_wchar *ret)
9782 TRACE("(%p %p)\n", this, ret);
9783 return basic_stringbuf_short_str_get(&this->strbuf, ret);
9786 static inline basic_ios_char* basic_istringstream_char_to_basic_ios(basic_istringstream_char *ptr)
9788 return (basic_ios_char*)((char*)ptr+basic_istringstream_char_vbtable[1]);
9791 static inline basic_istringstream_char* basic_istringstream_char_from_basic_ios(basic_ios_char *ptr)
9793 return (basic_istringstream_char*)((char*)ptr-basic_istringstream_char_vbtable[1]);
9796 /* ??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 */
9797 /* ??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 */
9798 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_str, 16)
9799 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_str(basic_istringstream_char *this,
9800 const basic_string_char *str, int mode, bool virt_init)
9802 basic_ios_char *basic_ios;
9804 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
9806 if(virt_init) {
9807 this->base.vbtable = basic_istringstream_char_vbtable;
9808 basic_ios = basic_istream_char_get_basic_ios(&this->base);
9809 basic_ios_char_ctor(basic_ios);
9810 }else {
9811 basic_ios = basic_istream_char_get_basic_ios(&this->base);
9814 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
9815 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
9816 basic_ios->base.vtable = &basic_istringstream_char_vtable;
9817 return this;
9820 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
9821 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
9822 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_mode, 12)
9823 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_mode(
9824 basic_istringstream_char *this, int mode, bool virt_init)
9826 basic_ios_char *basic_ios;
9828 TRACE("(%p %d %d)\n", this, mode, virt_init);
9830 if(virt_init) {
9831 this->base.vbtable = basic_istringstream_char_vbtable;
9832 basic_ios = basic_istream_char_get_basic_ios(&this->base);
9833 basic_ios_char_ctor(basic_ios);
9834 }else {
9835 basic_ios = basic_istream_char_get_basic_ios(&this->base);
9838 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_in);
9839 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
9840 basic_ios->base.vtable = &basic_istringstream_char_vtable;
9841 return this;
9844 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
9845 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
9846 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor, 4)
9847 basic_istringstream_char* __thiscall basic_istringstream_char_ctor(
9848 basic_istringstream_char *this)
9850 return basic_istringstream_char_ctor_mode(this, 0, TRUE);
9853 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
9854 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
9855 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_dtor, 4)
9856 void __thiscall basic_istringstream_char_dtor(basic_ios_char *base)
9858 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
9860 TRACE("(%p)\n", this);
9862 basic_stringbuf_char_dtor(&this->strbuf);
9863 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
9866 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
9867 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
9868 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vbase_dtor, 4)
9869 void __thiscall basic_istringstream_char_vbase_dtor(basic_istringstream_char *this)
9871 TRACE("(%p)\n", this);
9873 basic_istringstream_char_dtor(basic_istringstream_char_to_basic_ios(this));
9874 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base));
9877 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vector_dtor, 8)
9878 basic_istringstream_char* __thiscall basic_istringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
9880 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
9882 TRACE("(%p %x)\n", this, flags);
9884 if(flags & 2) {
9885 /* we have an array, with the number of elements stored before the first object */
9886 INT_PTR i, *ptr = (INT_PTR *)this-1;
9888 for(i=*ptr-1; i>=0; i--)
9889 basic_istringstream_char_vbase_dtor(this+i);
9890 operator_delete(ptr);
9891 } else {
9892 basic_istringstream_char_vbase_dtor(this);
9893 if(flags & 1)
9894 operator_delete(this);
9897 return this;
9900 /* ?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 */
9901 /* ?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 */
9902 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_rdbuf, 4)
9903 basic_stringbuf_char* __thiscall basic_istringstream_char_rdbuf(const basic_istringstream_char *this)
9905 TRACE("(%p)\n", this);
9906 return (basic_stringbuf_char*)&this->strbuf;
9909 /* ?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 */
9910 /* ?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 */
9911 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_set, 8)
9912 void __thiscall basic_istringstream_char_str_set(basic_istringstream_char *this, const basic_string_char *str)
9914 TRACE("(%p %p)\n", this, str);
9915 basic_stringbuf_char_str_set(&this->strbuf, str);
9918 /* ?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 */
9919 /* ?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 */
9920 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_get, 8)
9921 basic_string_char* __thiscall basic_istringstream_char_str_get(const basic_istringstream_char *this, basic_string_char *ret)
9923 TRACE("(%p %p)\n", this, ret);
9924 return basic_stringbuf_char_str_get(&this->strbuf, ret);
9927 static inline basic_ios_wchar* basic_istringstream_short_to_basic_ios(basic_istringstream_wchar *ptr)
9929 return (basic_ios_wchar*)((char*)ptr+basic_istringstream_short_vbtable[1]);
9932 static inline basic_istringstream_wchar* basic_istringstream_short_from_basic_ios(basic_ios_wchar *ptr)
9934 return (basic_istringstream_wchar*)((char*)ptr-basic_istringstream_short_vbtable[1]);
9937 /* ??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 */
9938 /* ??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 */
9939 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor_str, 16)
9940 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor_str(basic_istringstream_wchar *this,
9941 const basic_string_wchar *str, int mode, bool virt_init)
9943 basic_ios_wchar *basic_ios;
9945 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
9947 if(virt_init) {
9948 this->base.vbtable = basic_istringstream_short_vbtable;
9949 basic_ios = basic_istream_short_get_basic_ios(&this->base);
9950 basic_ios_short_ctor(basic_ios);
9951 }else {
9952 basic_ios = basic_istream_short_get_basic_ios(&this->base);
9955 basic_stringbuf_short_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
9956 basic_istream_short_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
9957 basic_ios->base.vtable = &basic_istringstream_short_vtable;
9958 return this;
9961 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
9962 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
9963 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor_mode, 12)
9964 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor_mode(
9965 basic_istringstream_wchar *this, int mode, bool virt_init)
9967 basic_ios_wchar *basic_ios;
9969 TRACE("(%p %d %d)\n", this, mode, virt_init);
9971 if(virt_init) {
9972 this->base.vbtable = basic_istringstream_short_vbtable;
9973 basic_ios = basic_istream_short_get_basic_ios(&this->base);
9974 basic_ios_short_ctor(basic_ios);
9975 }else {
9976 basic_ios = basic_istream_short_get_basic_ios(&this->base);
9979 basic_stringbuf_short_ctor_mode(&this->strbuf, mode|OPENMODE_in);
9980 basic_istream_short_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
9981 basic_ios->base.vtable = &basic_istringstream_short_vtable;
9982 return this;
9985 /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
9986 /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
9987 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor, 4)
9988 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor(
9989 basic_istringstream_wchar *this)
9991 return basic_istringstream_short_ctor_mode(this, 0, TRUE);
9994 /* ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
9995 /* ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
9996 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_dtor, 4)
9997 void __thiscall basic_istringstream_short_dtor(basic_ios_wchar *base)
9999 basic_istringstream_wchar *this = basic_istringstream_short_from_basic_ios(base);
10001 TRACE("(%p)\n", this);
10003 basic_stringbuf_short_dtor(&this->strbuf);
10004 basic_istream_short_dtor(basic_istream_short_to_basic_ios(&this->base));
10007 /* ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
10008 /* ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
10009 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_vbase_dtor, 4)
10010 void __thiscall basic_istringstream_short_vbase_dtor(basic_istringstream_wchar *this)
10012 TRACE("(%p)\n", this);
10014 basic_istringstream_short_dtor(basic_istringstream_short_to_basic_ios(this));
10015 basic_ios_short_dtor(basic_istream_short_get_basic_ios(&this->base));
10018 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_vector_dtor, 8)
10019 basic_istringstream_wchar* __thiscall basic_istringstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
10021 basic_istringstream_wchar *this = basic_istringstream_short_from_basic_ios(base);
10023 TRACE("(%p %x)\n", this, flags);
10025 if(flags & 2) {
10026 /* we have an array, with the number of elements stored before the first object */
10027 INT_PTR i, *ptr = (INT_PTR *)this-1;
10029 for(i=*ptr-1; i>=0; i--)
10030 basic_istringstream_short_vbase_dtor(this+i);
10031 operator_delete(ptr);
10032 } else {
10033 basic_istringstream_short_vbase_dtor(this);
10034 if(flags & 1)
10035 operator_delete(this);
10038 return this;
10041 /* ?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 */
10042 /* ?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 */
10043 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_rdbuf, 4)
10044 basic_stringbuf_wchar* __thiscall basic_istringstream_short_rdbuf(const basic_istringstream_wchar *this)
10046 TRACE("(%p)\n", this);
10047 return (basic_stringbuf_wchar*)&this->strbuf;
10050 /* ?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 */
10051 /* ?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 */
10052 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_str_set, 8)
10053 void __thiscall basic_istringstream_short_str_set(basic_istringstream_wchar *this, const basic_string_wchar *str)
10055 TRACE("(%p %p)\n", this, str);
10056 basic_stringbuf_short_str_set(&this->strbuf, str);
10059 /* ?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 */
10060 /* ?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 */
10061 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_str_get, 8)
10062 basic_string_wchar* __thiscall basic_istringstream_short_str_get(const basic_istringstream_wchar *this, basic_string_wchar *ret)
10064 TRACE("(%p %p)\n", this, ret);
10065 return basic_stringbuf_short_str_get(&this->strbuf, ret);
10068 static inline basic_ios_char* basic_stringstream_char_to_basic_ios(basic_stringstream_char *ptr)
10070 return (basic_ios_char*)((char*)ptr+basic_stringstream_char_vbtable1[1]);
10073 static inline basic_stringstream_char* basic_stringstream_char_from_basic_ios(basic_ios_char *ptr)
10075 return (basic_stringstream_char*)((char*)ptr-basic_stringstream_char_vbtable1[1]);
10078 /* ??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 */
10079 /* ??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 */
10080 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_str, 16)
10081 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_str(basic_stringstream_char *this,
10082 const basic_string_char *str, int mode, bool virt_init)
10084 basic_ios_char *basic_ios;
10086 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
10088 if(virt_init) {
10089 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
10090 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
10091 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10092 basic_ios_char_ctor(basic_ios);
10093 }else {
10094 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10097 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode);
10098 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
10099 basic_ios->base.vtable = &basic_stringstream_char_vtable;
10100 return this;
10103 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
10104 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
10105 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_mode, 12)
10106 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_mode(
10107 basic_stringstream_char *this, int mode, bool virt_init)
10109 basic_ios_char *basic_ios;
10111 TRACE("(%p %d %d)\n", this, mode, virt_init);
10113 if(virt_init) {
10114 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
10115 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
10116 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10117 basic_ios_char_ctor(basic_ios);
10118 }else {
10119 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10122 basic_stringbuf_char_ctor_mode(&this->strbuf, mode);
10123 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
10124 basic_ios->base.vtable = &basic_stringstream_char_vtable;
10125 return this;
10128 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
10129 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
10130 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor, 4)
10131 basic_stringstream_char* __thiscall basic_stringstream_char_ctor(
10132 basic_stringstream_char *this)
10134 return basic_stringstream_char_ctor_mode(
10135 this, OPENMODE_out|OPENMODE_in, TRUE);
10138 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
10139 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
10140 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_dtor, 4)
10141 void __thiscall basic_stringstream_char_dtor(basic_ios_char *base)
10143 basic_stringstream_char *this = basic_stringstream_char_from_basic_ios(base);
10145 TRACE("(%p)\n", this);
10147 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
10148 basic_stringbuf_char_dtor(&this->strbuf);
10151 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
10152 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
10153 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vbase_dtor, 4)
10154 void __thiscall basic_stringstream_char_vbase_dtor(basic_stringstream_char *this)
10156 TRACE("(%p)\n", this);
10158 basic_stringstream_char_dtor(basic_stringstream_char_to_basic_ios(this));
10159 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
10162 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vector_dtor, 8)
10163 basic_stringstream_char* __thiscall basic_stringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
10165 basic_stringstream_char *this = basic_stringstream_char_from_basic_ios(base);
10167 TRACE("(%p %x)\n", this, flags);
10169 if(flags & 2) {
10170 /* we have an array, with the number of elements stored before the first object */
10171 INT_PTR i, *ptr = (INT_PTR *)this-1;
10173 for(i=*ptr-1; i>=0; i--)
10174 basic_stringstream_char_vbase_dtor(this+i);
10175 operator_delete(ptr);
10176 } else {
10177 basic_stringstream_char_vbase_dtor(this);
10178 if(flags & 1)
10179 operator_delete(this);
10182 return this;
10185 /* ?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 */
10186 /* ?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 */
10187 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_rdbuf, 4)
10188 basic_stringbuf_char* __thiscall basic_stringstream_char_rdbuf(const basic_stringstream_char *this)
10190 TRACE("(%p)\n", this);
10191 return (basic_stringbuf_char*)&this->strbuf;
10194 /* ?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 */
10195 /* ?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 */
10196 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_set, 8)
10197 void __thiscall basic_stringstream_char_str_set(basic_stringstream_char *this, const basic_string_char *str)
10199 TRACE("(%p %p)\n", this, str);
10200 basic_stringbuf_char_str_set(&this->strbuf, str);
10203 /* ?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 */
10204 /* ?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 */
10205 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_get, 8)
10206 basic_string_char* __thiscall basic_stringstream_char_str_get(const basic_stringstream_char *this, basic_string_char *ret)
10208 TRACE("(%p %p)\n", this, ret);
10209 return basic_stringbuf_char_str_get(&this->strbuf, ret);
10212 static inline basic_ios_wchar* basic_stringstream_short_to_basic_ios(basic_stringstream_wchar *ptr)
10214 return (basic_ios_wchar*)((char*)ptr+basic_stringstream_short_vbtable1[1]);
10217 static inline basic_stringstream_wchar* basic_stringstream_short_from_basic_ios(basic_ios_wchar *ptr)
10219 return (basic_stringstream_wchar*)((char*)ptr-basic_stringstream_short_vbtable1[1]);
10222 /* ??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 */
10223 /* ??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 */
10224 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor_str, 16)
10225 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor_str(basic_stringstream_wchar *this,
10226 const basic_string_wchar *str, int mode, bool virt_init)
10228 basic_ios_wchar *basic_ios;
10230 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
10232 if(virt_init) {
10233 this->base.base1.vbtable = basic_stringstream_short_vbtable1;
10234 this->base.base2.vbtable = basic_stringstream_short_vbtable2;
10235 basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
10236 basic_ios_short_ctor(basic_ios);
10237 }else {
10238 basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
10241 basic_stringbuf_short_ctor_str(&this->strbuf, str, mode);
10242 basic_iostream_short_ctor(&this->base, &this->strbuf.base, FALSE);
10243 basic_ios->base.vtable = &basic_stringstream_short_vtable;
10244 return this;
10247 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
10248 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
10249 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor_mode, 12)
10250 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor_mode(
10251 basic_stringstream_wchar *this, int mode, bool virt_init)
10253 basic_ios_wchar *basic_ios;
10255 TRACE("(%p %d %d)\n", this, mode, virt_init);
10257 if(virt_init) {
10258 this->base.base1.vbtable = basic_stringstream_short_vbtable1;
10259 this->base.base2.vbtable = basic_stringstream_short_vbtable2;
10260 basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
10261 basic_ios_short_ctor(basic_ios);
10262 }else {
10263 basic_ios = basic_istream_short_get_basic_ios(&this->base.base1);
10266 basic_stringbuf_short_ctor_mode(&this->strbuf, mode);
10267 basic_iostream_short_ctor(&this->base, &this->strbuf.base, FALSE);
10268 basic_ios->base.vtable = &basic_stringstream_short_vtable;
10269 return this;
10272 /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
10273 /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
10274 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor, 4)
10275 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor(
10276 basic_stringstream_wchar *this)
10278 return basic_stringstream_short_ctor_mode(
10279 this, OPENMODE_out|OPENMODE_in, TRUE);
10282 /* ??1?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
10283 /* ??1?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
10284 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_dtor, 4)
10285 void __thiscall basic_stringstream_short_dtor(basic_ios_wchar *base)
10287 basic_stringstream_wchar *this = basic_stringstream_short_from_basic_ios(base);
10289 TRACE("(%p)\n", this);
10291 basic_iostream_short_dtor(basic_iostream_short_to_basic_ios(&this->base));
10292 basic_stringbuf_short_dtor(&this->strbuf);
10295 /* ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
10296 /* ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
10297 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_vbase_dtor, 4)
10298 void __thiscall basic_stringstream_short_vbase_dtor(basic_stringstream_wchar *this)
10300 TRACE("(%p)\n", this);
10302 basic_stringstream_short_dtor(basic_stringstream_short_to_basic_ios(this));
10303 basic_ios_short_dtor(basic_istream_short_get_basic_ios(&this->base.base1));
10306 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_vector_dtor, 8)
10307 basic_stringstream_wchar* __thiscall basic_stringstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
10309 basic_stringstream_wchar *this = basic_stringstream_short_from_basic_ios(base);
10311 TRACE("(%p %x)\n", this, flags);
10313 if(flags & 2) {
10314 /* we have an array, with the number of elements stored before the first object */
10315 INT_PTR i, *ptr = (INT_PTR *)this-1;
10317 for(i=*ptr-1; i>=0; i--)
10318 basic_stringstream_short_vbase_dtor(this+i);
10319 operator_delete(ptr);
10320 } else {
10321 basic_stringstream_short_vbase_dtor(this);
10322 if(flags & 1)
10323 operator_delete(this);
10326 return this;
10329 /* ?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 */
10330 /* ?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 */
10331 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_rdbuf, 4)
10332 basic_stringbuf_wchar* __thiscall basic_stringstream_short_rdbuf(const basic_stringstream_wchar *this)
10334 TRACE("(%p)\n", this);
10335 return (basic_stringbuf_wchar*)&this->strbuf;
10338 /* ?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 */
10339 /* ?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 */
10340 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_str_set, 8)
10341 void __thiscall basic_stringstream_short_str_set(basic_stringstream_wchar *this, const basic_string_wchar *str)
10343 TRACE("(%p %p)\n", this, str);
10344 basic_stringbuf_short_str_set(&this->strbuf, str);
10347 /* ?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 */
10348 /* ?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 */
10349 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_str_get, 8)
10350 basic_string_wchar* __thiscall basic_stringstream_short_str_get(const basic_stringstream_wchar *this, basic_string_wchar *ret)
10352 TRACE("(%p %p)\n", this, ret);
10353 return basic_stringbuf_short_str_get(&this->strbuf, ret);
10356 /* ?_Init@strstreambuf@std@@IAEXHPAD0H@Z */
10357 /* ?_Init@strstreambuf@std@@IEAAX_JPEAD1H@Z */
10358 DEFINE_THISCALL_WRAPPER(strstreambuf__Init, 20)
10359 void __thiscall strstreambuf__Init(strstreambuf *this, streamsize len, char *g, char *p, int mode)
10361 TRACE("(%p %Id %p %p %d)\n", this, len, g, p, mode);
10363 this->minsize = 32;
10364 this->endsave = NULL;
10365 this->strmode = mode;
10366 this->palloc = NULL;
10367 this->pfree = NULL;
10369 if(!g) {
10370 this->strmode |= STRSTATE_Dynamic;
10371 if(len > this->minsize)
10372 this->minsize = len;
10373 this->seekhigh = NULL;
10374 return;
10377 if(len < 0)
10378 len = INT_MAX;
10379 else if(!len)
10380 len = strlen(g);
10382 this->seekhigh = g+len;
10383 basic_streambuf_char_setg(&this->base, g, g, p ? p : this->seekhigh);
10384 if(p)
10385 basic_streambuf_char_setp(&this->base, p, this->seekhigh);
10388 static strstreambuf* strstreambuf_ctor_get_put(strstreambuf *this, char *g, streamsize len, char *p)
10390 TRACE("(%p %p %Id %p)\n", this, g, len, p);
10392 basic_streambuf_char_ctor(&this->base);
10393 this->base.vtable = &strstreambuf_vtable;
10395 strstreambuf__Init(this, len, g, p, 0);
10396 return this;
10399 /* ?_Tidy@strstreambuf@std@@IAEXXZ */
10400 /* ?_Tidy@strstreambuf@std@@IEAAXXZ */
10401 DEFINE_THISCALL_WRAPPER(strstreambuf__Tidy, 4)
10402 void __thiscall strstreambuf__Tidy(strstreambuf *this)
10404 TRACE("(%p)\n", this);
10406 if((this->strmode & STRSTATE_Allocated) && !(this->strmode & STRSTATE_Frozen)) {
10407 if(this->pfree)
10408 this->pfree(basic_streambuf_char_eback(&this->base));
10409 else
10410 operator_delete(basic_streambuf_char_eback(&this->base));
10413 this->endsave = NULL;
10414 this->seekhigh = NULL;
10415 this->strmode &= ~(STRSTATE_Allocated | STRSTATE_Frozen);
10416 basic_streambuf_char_setg(&this->base, NULL, NULL, NULL);
10417 basic_streambuf_char_setp(&this->base, NULL, NULL);
10420 /* ??1strstreambuf@std@@UAE@XZ */
10421 /* ??1strstreambuf@std@@UEAA@XZ */
10422 DEFINE_THISCALL_WRAPPER(strstreambuf_dtor, 4)
10423 void __thiscall strstreambuf_dtor(strstreambuf *this)
10425 TRACE("(%p)\n", this);
10427 strstreambuf__Tidy(this);
10428 basic_streambuf_char_dtor(&this->base);
10431 DEFINE_THISCALL_WRAPPER(strstreambuf_vector_dtor, 8)
10432 strstreambuf* __thiscall strstreambuf_vector_dtor(strstreambuf *this, unsigned int flags)
10434 TRACE("(%p %x)\n", this, flags);
10435 if(flags & 2) {
10436 /* we have an array, with the number of elements stored before the first object */
10437 INT_PTR i, *ptr = (INT_PTR *)this-1;
10439 for(i=*ptr-1; i>=0; i--)
10440 strstreambuf_dtor(this+i);
10441 operator_delete(ptr);
10442 } else {
10443 strstreambuf_dtor(this);
10444 if(flags & 1)
10445 operator_delete(this);
10448 return this;
10451 /* ?freeze@strstreambuf@std@@QAEX_N@Z */
10452 /* ?freeze@strstreambuf@std@@QEAAX_N@Z */
10453 DEFINE_THISCALL_WRAPPER(strstreambuf_freeze, 8)
10454 void __thiscall strstreambuf_freeze(strstreambuf *this, bool freeze)
10456 TRACE("(%p %d)\n", this, freeze);
10458 if(!freeze == !(this->strmode & STRSTATE_Frozen))
10459 return;
10461 if(freeze) {
10462 this->strmode |= STRSTATE_Frozen;
10463 this->endsave = basic_streambuf_char_epptr(&this->base);
10464 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
10465 basic_streambuf_char_pptr(&this->base), basic_streambuf_char_eback(&this->base));
10466 }else {
10467 this->strmode &= ~STRSTATE_Frozen;
10468 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
10469 basic_streambuf_char_pptr(&this->base), this->endsave);
10473 /* ?overflow@strstreambuf@std@@MAEHH@Z */
10474 /* ?overflow@strstreambuf@std@@MEAAHH@Z */
10475 DEFINE_THISCALL_WRAPPER(strstreambuf_overflow, 8)
10476 int __thiscall strstreambuf_overflow(strstreambuf *this, int c)
10478 size_t old_size, size;
10479 char *ptr, *buf;
10481 TRACE("(%p %d)\n", this, c);
10483 if(c == EOF)
10484 return !EOF;
10486 if(this->strmode & STRSTATE_Frozen)
10487 return EOF;
10489 ptr = basic_streambuf_char_pptr(&this->base);
10490 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
10491 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
10493 if(!(this->strmode & STRSTATE_Dynamic) || (this->strmode & STRSTATE_Constant))
10494 return EOF;
10496 ptr = basic_streambuf_char_eback(&this->base);
10497 old_size = ptr ? basic_streambuf_char_epptr(&this->base) - ptr : 0;
10499 size = old_size + old_size/2;
10500 if(size < this->minsize)
10501 size = this->minsize;
10503 if(this->palloc)
10504 buf = this->palloc(size);
10505 else
10506 buf = operator_new(size);
10507 if(!buf)
10508 return EOF;
10510 memcpy(buf, ptr, old_size);
10511 if(this->strmode & STRSTATE_Allocated) {
10512 if(this->pfree)
10513 this->pfree(ptr);
10514 else
10515 operator_delete(ptr);
10518 this->strmode |= STRSTATE_Allocated;
10519 if(!old_size) {
10520 this->seekhigh = buf;
10521 basic_streambuf_char_setp(&this->base, buf, buf+size);
10522 basic_streambuf_char_setg(&this->base, buf, buf, buf);
10523 }else {
10524 this->seekhigh = this->seekhigh-ptr+buf;
10525 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base)-ptr+buf,
10526 basic_streambuf_char_pptr(&this->base)-ptr+buf, buf+size);
10527 basic_streambuf_char_setg(&this->base, buf, basic_streambuf_char_gptr(&this->base)-ptr+buf,
10528 basic_streambuf_char_pptr(&this->base));
10531 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
10534 /* ?pbackfail@strstreambuf@std@@MAEHH@Z */
10535 /* ?pbackfail@strstreambuf@std@@MEAAHH@Z */
10536 DEFINE_THISCALL_WRAPPER(strstreambuf_pbackfail, 8)
10537 int __thiscall strstreambuf_pbackfail(strstreambuf *this, int c)
10539 char *ptr = basic_streambuf_char_gptr(&this->base);
10541 TRACE("(%p %d)\n", this, c);
10543 if(ptr<=basic_streambuf_char_eback(&this->base)
10544 || ((this->strmode & STRSTATE_Constant) && c!=ptr[-1]))
10545 return EOF;
10547 basic_streambuf_char_gbump(&this->base, -1);
10548 if(c == EOF)
10549 return !EOF;
10550 if(this->strmode & STRSTATE_Constant)
10551 return (unsigned char)c;
10553 return (unsigned char)(ptr[0] = c);
10556 /* ?seekoff@strstreambuf@std@@MAE?AV?$fpos@H@2@JW4seekdir@ios_base@2@H@Z */
10557 /* ?seekoff@strstreambuf@std@@MEAA?AV?$fpos@H@2@_JW4seekdir@ios_base@2@H@Z */
10558 /* ?seekoff@strstreambuf@std@@MAE?AV?$fpos@H@2@JHH@Z */
10559 /* ?seekoff@strstreambuf@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
10560 DEFINE_THISCALL_WRAPPER(strstreambuf_seekoff, 20)
10561 fpos_int* __thiscall strstreambuf_seekoff(strstreambuf *this, fpos_int *ret, streamoff off, int way, int mode)
10563 char *eback = basic_streambuf_char_eback(&this->base);
10564 char *pptr = basic_streambuf_char_pptr(&this->base);
10565 char *gptr = basic_streambuf_char_gptr(&this->base);
10567 TRACE("(%p %p %Id %d %d)\n", this, ret, off, way, mode);
10569 ret->off = 0;
10570 ret->state = 0;
10572 if(pptr > this->seekhigh)
10573 this->seekhigh = pptr;
10575 if((mode & OPENMODE_in) && gptr) {
10576 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
10577 off += gptr-eback;
10578 else if(way == SEEKDIR_end)
10579 off += this->seekhigh-eback;
10580 else if(way != SEEKDIR_beg)
10581 off = -1;
10583 if(off<0 || off>this->seekhigh-eback) {
10584 off = -1;
10585 }else {
10586 basic_streambuf_char_gbump(&this->base, eback-gptr+off);
10587 if((mode & OPENMODE_out) && pptr) {
10588 basic_streambuf_char_setp_next(&this->base, eback,
10589 gptr, basic_streambuf_char_epptr(&this->base));
10592 }else if((mode & OPENMODE_out) && pptr) {
10593 if(way == SEEKDIR_cur)
10594 off += pptr-eback;
10595 else if(way == SEEKDIR_end)
10596 off += this->seekhigh-eback;
10597 else if(way != SEEKDIR_beg)
10598 off = -1;
10600 if(off<0 || off>this->seekhigh-eback)
10601 off = -1;
10602 else
10603 basic_streambuf_char_pbump(&this->base, eback-pptr+off);
10604 }else {
10605 off = -1;
10608 ret->pos = off;
10609 return ret;
10612 /* ?seekpos@strstreambuf@std@@MAE?AV?$fpos@H@2@V32@H@Z */
10613 /* ?seekpos@strstreambuf@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
10614 DEFINE_THISCALL_WRAPPER(strstreambuf_seekpos, 36)
10615 fpos_int* __thiscall strstreambuf_seekpos(strstreambuf *this, fpos_int *ret, fpos_int pos, int mode)
10617 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
10619 if(pos.off==-1 && pos.pos==0 && pos.state==0) {
10620 *ret = pos;
10621 return ret;
10624 return strstreambuf_seekoff(this, ret, pos.pos+pos.off, SEEKDIR_beg, mode);
10627 /* ?underflow@strstreambuf@std@@MAEHXZ */
10628 /* ?underflow@strstreambuf@std@@MEAAHXZ */
10629 DEFINE_THISCALL_WRAPPER(strstreambuf_underflow, 4)
10630 int __thiscall strstreambuf_underflow(strstreambuf *this)
10632 char *gptr = basic_streambuf_char_gptr(&this->base);
10633 char *pptr;
10635 TRACE("(%p)\n", this);
10637 if(!gptr)
10638 return EOF;
10640 if(gptr < basic_streambuf_char_egptr(&this->base))
10641 return (unsigned char)(*gptr);
10643 pptr = basic_streambuf_char_gptr(&this->base);
10644 if(pptr > this->seekhigh)
10645 this->seekhigh = pptr;
10647 if(this->seekhigh <= gptr)
10648 return EOF;
10650 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base),
10651 gptr, this->seekhigh);
10652 return (unsigned char)(*gptr);
10655 static inline basic_ios_char* ostrstream_to_basic_ios(ostrstream *ptr)
10657 return (basic_ios_char*)((char*)ptr+ostrstream_vbtable[1]);
10660 static inline ostrstream* ostrstream_from_basic_ios(basic_ios_char *ptr)
10662 return (ostrstream*)((char*)ptr-ostrstream_vbtable[1]);
10665 /* ??0ostrstream@std@@QAE@PADHH@Z */
10666 DEFINE_THISCALL_WRAPPER(ostrstream_ctor, 20)
10667 ostrstream* __thiscall ostrstream_ctor(ostrstream *this, char *buf, streamsize size, int mode, bool virt_init)
10669 basic_ios_char *basic_ios;
10671 TRACE("(%p %p %Id %d %d)\n", this, buf, size, mode, virt_init);
10673 if(virt_init) {
10674 this->base.vbtable = ostrstream_vbtable;
10675 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10676 basic_ios_char_ctor(basic_ios);
10677 }else {
10678 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10681 strstreambuf_ctor_get_put(&this->buf, buf, size,
10682 buf && (mode & OPENMODE_app) ? buf+strlen(buf) : buf);
10683 basic_ostream_char_ctor(&this->base, &this->buf.base, FALSE, TRUE, FALSE);
10684 basic_ios->base.vtable = &ostrstream_vtable;
10685 return this;
10688 /* ??1ostrstream@std@@UAE@XZ */
10689 /* ??1ostrstream@std@@UEAA@XZ */
10690 DEFINE_THISCALL_WRAPPER(ostrstream_dtor, 4)
10691 void __thiscall ostrstream_dtor(basic_ios_char *base)
10693 ostrstream *this = ostrstream_from_basic_ios(base);
10695 TRACE("(%p)\n", this);
10697 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
10698 strstreambuf_dtor(&this->buf);
10701 static void ostrstream_vbase_dtor(ostrstream *this)
10703 TRACE("(%p)\n", this);
10705 ostrstream_dtor(ostrstream_to_basic_ios(this));
10706 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
10709 DEFINE_THISCALL_WRAPPER(ostrstream_vector_dtor, 8)
10710 ostrstream* __thiscall ostrstream_vector_dtor(basic_ios_char *base, unsigned int flags)
10712 ostrstream *this = ostrstream_from_basic_ios(base);
10714 TRACE("(%p %x)\n", this, flags);
10716 if(flags & 2) {
10717 /* we have an array, with the number of elements stored before the first object */
10718 INT_PTR i, *ptr = (INT_PTR *)this-1;
10720 for(i=*ptr-1; i>=0; i--)
10721 ostrstream_vbase_dtor(this+i);
10722 operator_delete(ptr);
10723 } else {
10724 ostrstream_vbase_dtor(this);
10725 if(flags & 1)
10726 operator_delete(this);
10729 return this;
10732 static inline istrstream* istrstream_from_basic_ios(basic_ios_char *ptr)
10734 return (istrstream*)((char*)ptr-istrstream_vbtable[1]);
10737 /* ??1istrstream@std@@UAE@XZ */
10738 /* ??1istrstream@std@@UEAA@XZ */
10739 DEFINE_THISCALL_WRAPPER(istrstream_dtor, 4)
10740 void __thiscall istrstream_dtor(basic_ios_char *base)
10742 istrstream *this = istrstream_from_basic_ios(base);
10744 TRACE("(%p)\n", this);
10746 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
10747 strstreambuf_dtor(&this->buf);
10750 static inline basic_ios_char* strstream_to_basic_ios(strstream *ptr)
10752 return (basic_ios_char*)((char*)ptr+strstream_vbtable1[1]);
10755 static inline strstream* strstream_from_basic_ios(basic_ios_char *ptr)
10757 return (strstream*)((char*)ptr-strstream_vbtable1[1]);
10760 /* ??$?6MDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@M@0@@Z */
10761 /* ??$?6MDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@M@0@@Z */
10762 basic_ostream_char* __cdecl basic_ostream_char_print_complex_float(basic_ostream_char *ostr, const complex_float *val)
10764 struct {
10765 basic_ostringstream_char obj;
10766 basic_ios_char vbase;
10767 } oss;
10768 ios_base *ostringstream_ios_base, *ostream_ios_base;
10769 locale loc;
10770 basic_string_char str;
10771 basic_ostringstream_char_ctor(&oss.obj);
10772 ostringstream_ios_base = &oss.vbase.base;
10773 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
10774 TRACE("(%p %p)\n", ostr, val);
10776 ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base));
10777 locale_dtor(&loc);
10778 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
10779 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
10781 basic_ostream_char_print_ch(&oss.obj.base, '(');
10782 basic_ostream_char_print_float(&oss.obj.base, val->real);
10783 basic_ostream_char_print_ch(&oss.obj.base, ',');
10784 basic_ostream_char_print_float(&oss.obj.base, val->imag);
10785 basic_ostream_char_print_ch(&oss.obj.base, ')');
10787 basic_ostringstream_char_str_get(&oss.obj, &str);
10788 basic_ostringstream_char_dtor(&oss.vbase);
10789 basic_ostream_char_print_bstr(ostr, &str);
10790 MSVCP_basic_string_char_dtor(&str);
10791 return ostr;
10794 /* ??$?6NDU?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$complex@N@0@@Z */
10795 /* ??$?6NDU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@N@0@@Z */
10796 basic_ostream_char* __cdecl basic_ostream_char_print_complex_double(basic_ostream_char *ostr, const complex_double *val)
10798 struct {
10799 basic_ostringstream_char obj;
10800 basic_ios_char vbase;
10801 } oss;
10802 ios_base *ostringstream_ios_base, *ostream_ios_base;
10803 locale loc;
10804 basic_string_char str;
10805 basic_ostringstream_char_ctor(&oss.obj);
10806 ostringstream_ios_base = &oss.vbase.base;
10807 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
10808 TRACE("(%p %p)\n", ostr, val);
10810 ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base));
10811 locale_dtor(&loc);
10812 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
10813 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
10815 basic_ostream_char_print_ch(&oss.obj.base, '(');
10816 basic_ostream_char_print_double(&oss.obj.base, val->real);
10817 basic_ostream_char_print_ch(&oss.obj.base, ',');
10818 basic_ostream_char_print_double(&oss.obj.base, val->imag);
10819 basic_ostream_char_print_ch(&oss.obj.base, ')');
10821 basic_ostringstream_char_str_get(&oss.obj, &str);
10822 basic_ostringstream_char_dtor(&oss.vbase);
10823 basic_ostream_char_print_bstr(ostr, &str);
10824 MSVCP_basic_string_char_dtor(&str);
10825 return ostr;
10828 /* ??$?6odu?$char_traits@d@std@@@std@@yaaav?$basic_ostream@du?$char_traits@d@std@@@0@aav10@abv?$complex@o@0@@Z */
10829 /* ??$?6ODU?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$complex@O@0@@Z */
10830 basic_ostream_char* __cdecl basic_ostream_char_print_complex_ldouble(basic_ostream_char *ostr, const complex_double *val)
10832 struct {
10833 basic_ostringstream_char obj;
10834 basic_ios_char vbase;
10835 } oss;
10836 ios_base *ostringstream_ios_base, *ostream_ios_base;
10837 locale loc;
10838 basic_string_char str;
10839 basic_ostringstream_char_ctor(&oss.obj);
10840 ostringstream_ios_base = &oss.vbase.base;
10841 ostream_ios_base = &basic_ostream_char_get_basic_ios(ostr)->base;
10842 TRACE("(%p %p)\n", ostr, val);
10844 ios_base_imbue(ostringstream_ios_base, &loc, IOS_LOCALE(ostream_ios_base));
10845 locale_dtor(&loc);
10846 ios_base_precision_set(ostringstream_ios_base, ios_base_precision_get(ostream_ios_base));
10847 ios_base_flags_set(ostringstream_ios_base, ios_base_flags_get(ostream_ios_base));
10849 basic_ostream_char_print_ch(&oss.obj.base, '(');
10850 basic_ostream_char_print_ldouble(&oss.obj.base, val->real);
10851 basic_ostream_char_print_ch(&oss.obj.base, ',');
10852 basic_ostream_char_print_ldouble(&oss.obj.base, val->imag);
10853 basic_ostream_char_print_ch(&oss.obj.base, ')');
10855 basic_ostringstream_char_str_get(&oss.obj, &str);
10856 basic_ostringstream_char_dtor(&oss.vbase);
10857 basic_ostream_char_print_bstr(ostr, &str);
10858 MSVCP_basic_string_char_dtor(&str);
10859 return ostr;
10862 /* ??0strstream@std@@QAE@PADHH@Z */
10863 /* ??0strstream@std@@QEAA@PEAD_JH@Z */
10864 DEFINE_THISCALL_WRAPPER(strstream_ctor, 20)
10865 strstream* __thiscall strstream_ctor(strstream *this, char *buf, streamsize size, int mode, bool virt_init)
10867 basic_ios_char *basic_ios;
10869 TRACE("(%p %p %Id %d %d)\n", this, buf, size, mode, virt_init);
10871 if(virt_init) {
10872 this->base.base1.vbtable = strstream_vbtable1;
10873 this->base.base2.vbtable = strstream_vbtable2;
10874 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10875 basic_ios_char_ctor(basic_ios);
10876 }else {
10877 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10880 strstreambuf_ctor_get_put(&this->buf, buf, size,
10881 buf && (mode & OPENMODE_app) ? buf+strlen(buf) : buf);
10882 basic_iostream_char_ctor(&this->base, &this->buf.base, FALSE);
10883 basic_ios->base.vtable = &strstream_vtable;
10884 return this;
10887 /* ??1strstream@std@@UAE@XZ */
10888 /* ??1strstream@std@@UEAA@XZ */
10889 DEFINE_THISCALL_WRAPPER(strstream_dtor, 4)
10890 void __thiscall strstream_dtor(basic_ios_char *base)
10892 strstream *this = strstream_from_basic_ios(base);
10894 TRACE("(%p)\n", this);
10896 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
10897 strstreambuf_dtor(&this->buf);
10900 static void strstream_vbase_dtor(strstream *this)
10902 TRACE("(%p)\n", this);
10904 strstream_dtor(strstream_to_basic_ios(this));
10905 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
10908 DEFINE_THISCALL_WRAPPER(strstream_vector_dtor, 8)
10909 strstream* __thiscall strstream_vector_dtor(basic_ios_char *base, unsigned int flags)
10911 strstream *this = strstream_from_basic_ios(base);
10913 TRACE("(%p %x)\n", this, flags);
10915 if(flags & 2) {
10916 /* we have an array, with the number of elements stored before the first object */
10917 INT_PTR i, *ptr = (INT_PTR *)this-1;
10919 for(i=*ptr-1; i>=0; i--)
10920 strstream_vbase_dtor(this+i);
10921 operator_delete(ptr);
10922 } else {
10923 strstream_vbase_dtor(this);
10924 if(flags & 1)
10925 operator_delete(this);
10928 return this;
10931 static void __cdecl setprecision_func(ios_base *base, streamsize prec)
10933 ios_base_precision_set(base, prec);
10936 /* ?setprecision@std@@YA?AU?$_Smanip@H@1@H@Z */
10937 /* ?setprecision@std@@YA?AU?$_Smanip@_J@1@_J@Z */
10938 manip_streamsize* __cdecl setprecision(manip_streamsize *ret, streamsize prec)
10940 TRACE("(%p %Id)\n", ret, prec);
10942 ret->pfunc = setprecision_func;
10943 ret->arg = prec;
10944 return ret;
10947 static void __cdecl setw_func(ios_base *base, streamsize width)
10949 ios_base_width_set(base, width);
10952 /* ?setw@std@@YA?AU?$_Smanip@H@1@H@Z */
10953 /* ?setw@std@@YA?AU?$_Smanip@_J@1@_J@Z */
10954 manip_streamsize* __cdecl setw(manip_streamsize *ret, streamsize width)
10956 TRACE("(%p %Id)\n", ret, width);
10958 ret->pfunc = setw_func;
10959 ret->arg = width;
10960 return ret;
10963 static void __cdecl resetioflags_func(ios_base *base, int mask)
10965 ios_base_setf_mask(base, 0, mask);
10968 /* ?resetiosflags@std@@YA?AU?$_Smanip@H@1@H@Z */
10969 manip_int* __cdecl resetiosflags(manip_int *ret, int mask)
10971 TRACE("(%p %d)\n", ret, mask);
10973 ret->pfunc = resetioflags_func;
10974 ret->arg = mask;
10975 return ret;
10978 static void __cdecl setiosflags_func(ios_base *base, int mask)
10980 ios_base_setf_mask(base, FMTFLAG_mask, mask);
10983 /* ?setiosflags@std@@YA?AU?$_Smanip@H@1@H@Z */
10984 manip_int* __cdecl setiosflags(manip_int *ret, int mask)
10986 TRACE("(%p %d)\n", ret, mask);
10988 ret->pfunc = setiosflags_func;
10989 ret->arg = mask;
10990 return ret;
10993 static void __cdecl setbase_func(ios_base *base, int set_base)
10995 if(set_base == 10)
10996 set_base = FMTFLAG_dec;
10997 else if(set_base == 8)
10998 set_base = FMTFLAG_oct;
10999 else if(set_base == 16)
11000 set_base = FMTFLAG_hex;
11001 else
11002 set_base = 0;
11004 ios_base_setf_mask(base, set_base, FMTFLAG_basefield);
11007 /* ?setbase@std@@YA?AU?$_Smanip@H@1@H@Z */
11008 manip_int* __cdecl setbase(manip_int *ret, int base)
11010 TRACE("(%p %d)\n", ret, base);
11012 ret->pfunc = setbase_func;
11013 ret->arg = base;
11014 return ret;
11017 static basic_filebuf_char filebuf_char_stdin;
11018 /* ?cin@std@@3V?$basic_istream@DU?$char_traits@D@std@@@1@A */
11019 struct {
11020 basic_istream_char obj;
11021 basic_ios_char vbase;
11022 } cin = { { 0 } };
11024 static basic_filebuf_wchar filebuf_short_stdin;
11025 /* ?wcin@std@@3V?$basic_istream@GU?$char_traits@G@std@@@1@A */
11026 struct {
11027 basic_istream_wchar obj;
11028 basic_ios_wchar vbase;
11029 } ucin = { { 0 } };
11031 static basic_filebuf_char filebuf_char_stdout;
11032 /* ?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
11033 struct {
11034 basic_ostream_char obj;
11035 basic_ios_char vbase;
11036 } cout = { { 0 } };
11038 static basic_filebuf_wchar filebuf_short_stdout;
11039 /* ?wcout@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
11040 struct {
11041 basic_ostream_wchar obj;
11042 basic_ios_wchar vbase;
11043 } ucout = { { 0 } };
11045 static basic_filebuf_char filebuf_char_stderr;
11046 /* ?cerr@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
11047 struct {
11048 basic_ostream_char obj;
11049 basic_ios_char vbase;
11050 } cerr = { { 0 } };
11052 static basic_filebuf_wchar filebuf_short_stderr;
11053 /* ?wcerr@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
11054 struct {
11055 basic_ostream_wchar obj;
11056 basic_ios_wchar vbase;
11057 } ucerr = { { 0 } };
11059 static basic_filebuf_char filebuf_char_log;
11060 /* ?clog@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
11061 struct {
11062 basic_ostream_char obj;
11063 basic_ios_char vbase;
11064 } MSVCP_clog = { { 0 } };
11066 static basic_filebuf_wchar filebuf_short_log;
11067 /* ?wclog@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
11068 struct {
11069 basic_ostream_wchar obj;
11070 basic_ios_wchar vbase;
11071 } uclog = { { 0 } };
11073 /* ?_Init_cnt@Init@ios_base@std@@0HA */
11074 int ios_base_Init__Init_cnt = -1;
11076 /* ??0Init@ios_base@std@@QAE@XZ */
11077 /* ??0Init@ios_base@std@@QEAA@XZ */
11078 DEFINE_THISCALL_WRAPPER(ios_base_Init_ctor, 4)
11079 void* __thiscall ios_base_Init_ctor(void *this)
11081 TRACE("(%p)\n", this);
11083 if(ios_base_Init__Init_cnt < 0)
11084 ios_base_Init__Init_cnt = 1;
11085 else
11086 ios_base_Init__Init_cnt++;
11087 return this;
11090 /* ??1Init@ios_base@std@@QAE@XZ */
11091 /* ??1Init@ios_base@std@@QEAA@XZ */
11092 DEFINE_THISCALL_WRAPPER(ios_base_Init_dtor, 4)
11093 void __thiscall ios_base_Init_dtor(void *this)
11095 TRACE("(%p)\n", this);
11097 ios_base_Init__Init_cnt--;
11098 if(!ios_base_Init__Init_cnt) {
11099 basic_ostream_char_flush(&cout.obj);
11100 basic_ostream_char_flush(&cerr.obj);
11101 basic_ostream_char_flush(&MSVCP_clog.obj);
11105 /* ??4Init@ios_base@std@@QAEAAV012@ABV012@@Z */
11106 /* ??4Init@ios_base@std@@QEAAAEAV012@AEBV012@@Z */
11107 DEFINE_THISCALL_WRAPPER(ios_base_Init_op_assign, 8)
11108 void* __thiscall ios_base_Init_op_assign(void *this, void *rhs)
11110 TRACE("(%p %p)\n", this, rhs);
11111 return this;
11114 /* ?_Init_cnt@_Winit@std@@0HA */
11115 int _Winit__Init_cnt = -1;
11117 /* ??0_Winit@std@@QAE@XZ */
11118 /* ??0_Winit@std@@QEAA@XZ */
11119 DEFINE_THISCALL_WRAPPER(_Winit_ctor, 4)
11120 void* __thiscall _Winit_ctor(void *this)
11122 TRACE("(%p)\n", this);
11124 if(_Winit__Init_cnt < 0)
11125 _Winit__Init_cnt = 1;
11126 else
11127 _Winit__Init_cnt++;
11129 return this;
11132 /* ??1_Winit@std@@QAE@XZ */
11133 /* ??1_Winit@std@@QAE@XZ */
11134 DEFINE_THISCALL_WRAPPER(_Winit_dtor, 4)
11135 void __thiscall _Winit_dtor(void *this)
11137 TRACE("(%p)\n", this);
11139 _Winit__Init_cnt--;
11140 if(!_Winit__Init_cnt) {
11141 basic_ostream_short_flush(&ucout.obj);
11142 basic_ostream_short_flush(&ucerr.obj);
11143 basic_ostream_short_flush(&uclog.obj);
11147 /* ??4_Winit@std@@QAEAAV01@ABV01@@Z */
11148 /* ??4_Winit@std@@QEAAAEAV01@AEBV01@@Z */
11149 DEFINE_THISCALL_WRAPPER(_Winit_op_assign, 8)
11150 void* __thiscall _Winit_op_assign(void *this, void *rhs)
11152 TRACE("(%p %p)\n", this, rhs);
11153 return this;
11156 void init_io(void *base)
11158 #ifdef RTTI_USE_RVA
11159 init_iosb_rtti(base);
11160 init_ios_base_rtti(base);
11161 init_basic_ios_char_rtti(base);
11162 init_basic_ios_short_rtti(base);
11163 init_basic_streambuf_char_rtti(base);
11164 init_basic_streambuf_short_rtti(base);
11165 init_basic_filebuf_char_rtti(base);
11166 init_basic_filebuf_short_rtti(base);
11167 init_basic_stringbuf_char_rtti(base);
11168 init_basic_stringbuf_short_rtti(base);
11169 init_basic_ostream_char_rtti(base);
11170 init_basic_ostream_short_rtti(base);
11171 init_basic_istream_char_rtti(base);
11172 init_basic_istream_short_rtti(base);
11173 init_basic_iostream_char_rtti(base);
11174 init_basic_iostream_short_rtti(base);
11175 init_basic_ofstream_char_rtti(base);
11176 init_basic_ofstream_short_rtti(base);
11177 init_basic_ifstream_char_rtti(base);
11178 init_basic_ifstream_short_rtti(base);
11179 init_basic_fstream_char_rtti(base);
11180 init_basic_fstream_short_rtti(base);
11181 init_basic_ostringstream_char_rtti(base);
11182 init_basic_ostringstream_short_rtti(base);
11183 init_basic_istringstream_char_rtti(base);
11184 init_basic_istringstream_short_rtti(base);
11185 init_basic_stringstream_char_rtti(base);
11186 init_basic_stringstream_short_rtti(base);
11187 init_strstreambuf_rtti(base);
11188 init_strstream_rtti(base);
11189 init_ostrstream_rtti(base);
11190 #endif
11192 basic_filebuf_char_ctor_file(&filebuf_char_stdin, stdin);
11193 basic_istream_char_ctor(&cin.obj, &filebuf_char_stdin.base, FALSE/*FIXME*/, TRUE);
11195 basic_filebuf_short_ctor_file(&filebuf_short_stdin, stdin);
11196 basic_istream_short_ctor(&ucin.obj, &filebuf_short_stdin.base, FALSE/*FIXME*/, TRUE);
11198 basic_filebuf_char_ctor_file(&filebuf_char_stdout, stdout);
11199 basic_ostream_char_ctor(&cout.obj, &filebuf_char_stdout.base, FALSE/*FIXME*/, TRUE, TRUE);
11201 basic_filebuf_short_ctor_file(&filebuf_short_stdout, stdout);
11202 basic_ostream_short_ctor(&ucout.obj, &filebuf_short_stdout.base, FALSE/*FIXME*/, TRUE, TRUE);
11204 basic_filebuf_char_ctor_file(&filebuf_char_stderr, stderr);
11205 basic_ostream_char_ctor(&cerr.obj, &filebuf_char_stderr.base, FALSE/*FIXME*/, TRUE, TRUE);
11207 basic_filebuf_short_ctor_file(&filebuf_short_stderr, stderr);
11208 basic_ostream_short_ctor(&ucerr.obj, &filebuf_short_stderr.base, FALSE/*FIXME*/, TRUE, TRUE);
11210 basic_filebuf_char_ctor_file(&filebuf_char_log, stderr);
11211 basic_ostream_char_ctor(&MSVCP_clog.obj, &filebuf_char_log.base, FALSE/*FIXME*/, TRUE, TRUE);
11213 basic_filebuf_short_ctor_file(&filebuf_short_log, stderr);
11214 basic_ostream_short_ctor(&uclog.obj, &filebuf_short_log.base, FALSE/*FIXME*/, TRUE, TRUE);
11217 void free_io(void)
11219 basic_istream_char_vbase_dtor(&cin.obj);
11220 basic_filebuf_char_dtor(&filebuf_char_stdin);
11222 basic_istream_short_vbase_dtor(&ucin.obj);
11223 basic_filebuf_short_dtor(&filebuf_short_stdin);
11225 basic_ostream_char_vbase_dtor(&cout.obj);
11226 basic_filebuf_char_dtor(&filebuf_char_stdout);
11228 basic_ostream_short_vbase_dtor(&ucout.obj);
11229 basic_filebuf_short_dtor(&filebuf_short_stdout);
11231 basic_ostream_char_vbase_dtor(&cerr.obj);
11232 basic_filebuf_char_dtor(&filebuf_char_stderr);
11234 basic_ostream_short_vbase_dtor(&ucerr.obj);
11235 basic_filebuf_short_dtor(&filebuf_short_stderr);
11237 basic_ostream_char_vbase_dtor(&MSVCP_clog.obj);
11238 basic_filebuf_char_dtor(&filebuf_char_log);
11240 basic_ostream_short_vbase_dtor(&uclog.obj);
11241 basic_filebuf_short_dtor(&filebuf_short_log);