Release 1.4-rc5.
[wine] / dlls / msvcp90 / ios.c
1 /*
2  * Copyright 2011 Piotr Caban for CodeWeavers
3  *
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.
8  *
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.
13  *
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
17  */
18
19 #include "config.h"
20
21 #include <stdarg.h>
22 #include <stdio.h>
23
24 #include "msvcp90.h"
25 #include "windef.h"
26 #include "winbase.h"
27 #include "wine/debug.h"
28 WINE_DEFAULT_DEBUG_CHANNEL(msvcp90);
29
30 typedef enum {
31     IOSTATE_goodbit   = 0x00,
32     IOSTATE_eofbit    = 0x01,
33     IOSTATE_failbit   = 0x02,
34     IOSTATE_badbit    = 0x04,
35     IOSTATE__Hardfail = 0x10
36 } IOSB_iostate;
37
38 typedef enum {
39     FMTFLAG_skipws      = 0x0001,
40     FMTFLAG_unitbuf     = 0x0002,
41     FMTFLAG_uppercase   = 0x0004,
42     FMTFLAG_showbase    = 0x0008,
43     FMTFLAG_showpoint   = 0x0010,
44     FMTFLAG_showpos     = 0x0020,
45     FMTFLAG_left        = 0x0040,
46     FMTFLAG_right       = 0x0080,
47     FMTFLAG_internal    = 0x0100,
48     FMTFLAG_dec         = 0x0200,
49     FMTFLAG_oct         = 0x0400,
50     FMTFLAG_hex         = 0x0800,
51     FMTFLAG_scientific  = 0x1000,
52     FMTFLAG_fixed       = 0x2000,
53     FMTFLAG_hexfloat    = 0x3000,
54     FMTFLAG_boolalpha   = 0x4000,
55     FMTFLAG_stdio       = 0x8000,
56     FMTFLAG_adjustfield = FMTFLAG_left|FMTFLAG_right|FMTFLAG_internal,
57     FMTFLAG_basefield   = FMTFLAG_dec|FMTFLAG_oct|FMTFLAG_hex,
58     FMTFLAG_floadfield  = FMTFLAG_scientific|FMTFLAG_fixed
59 } IOSB_fmtflags;
60
61 typedef struct _iosarray {
62     struct _iosarray *next;
63     int index;
64     int long_val;
65     void *ptr_val;
66 } IOS_BASE_iosarray;
67
68 typedef enum {
69     EVENT_erase_event,
70     EVENT_imbue_event,
71     EVENT_copyfmt_event
72 } IOS_BASE_event;
73
74 struct _ios_base;
75 typedef void (CDECL *IOS_BASE_event_callback)(IOS_BASE_event, struct _ios_base*, int);
76 typedef struct _fnarray {
77     struct _fnarray *next;
78     int index;
79     IOS_BASE_event_callback event_handler;
80 } IOS_BASE_fnarray;
81
82 /* ?_Index@ios_base@std@@0HA */
83 int ios_base_Index = 0;
84 /* ?_Sync@ios_base@std@@0_NA */
85 MSVCP_bool ios_base_Sync = FALSE;
86
87 typedef struct _ios_base {
88     const vtable_ptr *vtable;
89     MSVCP_size_t stdstr;
90     IOSB_iostate state;
91     IOSB_iostate except;
92     IOSB_fmtflags fmtfl;
93     MSVCP_size_t prec;
94     MSVCP_size_t wide;
95     IOS_BASE_iosarray *arr;
96     IOS_BASE_fnarray *calls;
97     locale *loc;
98 } ios_base;
99
100 typedef struct {
101     streamoff off;
102     __int64 DECLSPEC_ALIGN(8) pos;
103     int state;
104 } fpos_int;
105
106 static inline const char* debugstr_fpos_int(fpos_int *fpos)
107 {
108     return wine_dbg_sprintf("fpos(%lu %s %d)", fpos->off, wine_dbgstr_longlong(fpos->pos), fpos->state);
109 }
110
111 typedef struct {
112     const vtable_ptr *vtable;
113     mutex lock;
114     char *rbuf;
115     char *wbuf;
116     char **prbuf;
117     char **pwbuf;
118     char *rpos;
119     char *wpos;
120     char **prpos;
121     char **pwpos;
122     int rsize;
123     int wsize;
124     int *prsize;
125     int *pwsize;
126     locale *loc;
127 } basic_streambuf_char;
128
129 void __thiscall basic_streambuf_char__Init_empty(basic_streambuf_char*);
130 void __thiscall basic_streambuf_char_setp(basic_streambuf_char*, char*, char*);
131 void __thiscall basic_streambuf_char_setg(basic_streambuf_char*, char*, char*, char*);
132
133 typedef struct {
134     ios_base child;
135     basic_streambuf_char *strbuf;
136     struct basic_ostream_char *stream;
137     char fillch;
138 } basic_ios_char;
139
140 typedef struct {
141     ios_base child;
142     /*basic_streambuf_wchar*/void *strbuf;
143     /*basic_ostream_wchar*/void *stream;
144     char fillch;
145 } basic_ios_wchar;
146
147 typedef struct {
148     const vtable_ptr *vtable;
149     basic_ios_char child;
150 } basic_ostream_char;
151
152 /* ??_7ios_base@std@@6B@ */
153 extern const vtable_ptr MSVCP_ios_base_vtable;
154
155 /* ??_7?$basic_ios@DU?$char_traits@D@std@@@std@@6B@ */
156 extern const vtable_ptr MSVCP_basic_ios_char_vtable;
157
158 /* ??_7?$basic_ios@_WU?$char_traits@_W@std@@@std@@6B@ */
159 extern const vtable_ptr MSVCP_basic_ios_wchar_vtable;
160
161 /* ??_7?$basic_streambuf@DU?$char_traits@D@std@@@std@@6B@ */
162 extern const vtable_ptr MSVCP_basic_streambuf_char_vtable;
163
164 /* ??_7?$basic_ostream@DU?$char_traits@D@std@@@std@@6B@ */
165 extern const vtable_ptr MSVCP_basic_ostream_char_vtable;
166
167 static const type_info iosb_type_info = {
168     &MSVCP_ios_base_vtable,
169     NULL,
170     ".?AV?$_Iosb@H@std@@"
171 };
172     
173 static const rtti_base_descriptor iosb_rtti_base_descriptor = {
174     &iosb_type_info,
175     0,
176     { 4, -1, 0 },
177     64
178 };
179
180 DEFINE_RTTI_DATA(ios_base, 0, 1, &iosb_rtti_base_descriptor, NULL, NULL, ".?AV?$_Iosb@H@std@@");
181 DEFINE_RTTI_DATA(basic_ios_char, 0, 2, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
182         NULL, ".?AV?$basic_ios@DU?$char_traits@D@std@@@std@@");
183 DEFINE_RTTI_DATA(basic_ios_wchar, 0, 2, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
184         NULL, ".?AV?$basic_ios@_WU?$char_traits@_W@std@@@std@@");
185 DEFINE_RTTI_DATA(basic_streambuf_char, 0, 0, NULL, NULL, NULL,
186         ".?AV?$basic_streambuf@DU?$char_traits@D@std@@@std@@");
187 DEFINE_RTTI_DATA(basic_ostream_char, 4, 3, &basic_ios_char_rtti_base_descriptor, &ios_base_rtti_base_descriptor,
188         &iosb_rtti_base_descriptor, ".?AV?$basic_ostream@DU?$char_traits@D@std@@@std@@");
189
190 #ifndef __GNUC__
191 void __asm_dummy_vtables(void) {
192 #endif
193     __ASM_VTABLE(ios_base, "");
194     __ASM_VTABLE(basic_ios_char, "");
195     __ASM_VTABLE(basic_ios_wchar, "");
196     __ASM_VTABLE(basic_streambuf_char,
197             VTABLE_ADD_FUNC(basic_streambuf_char_overflow)
198             VTABLE_ADD_FUNC(basic_streambuf_char_pbackfail)
199             VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
200             VTABLE_ADD_FUNC(basic_streambuf_char_underflow)
201             VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
202             VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
203             VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
204             VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
205             VTABLE_ADD_FUNC(basic_streambuf_char_seekoff)
206             VTABLE_ADD_FUNC(basic_streambuf_char_seekpos)
207             VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
208             VTABLE_ADD_FUNC(basic_streambuf_char_sync)
209             VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
210     __ASM_VTABLE(basic_ostream_char, "");
211 #ifndef __GNUC__
212 }
213 #endif
214
215 /* ??0ios_base@std@@IAE@XZ */
216 /* ??0ios_base@std@@IEAA@XZ */
217 DEFINE_THISCALL_WRAPPER(ios_base_ctor, 4)
218 ios_base* __thiscall ios_base_ctor(ios_base *this)
219 {
220     FIXME("(%p) stub\n", this);
221
222     this->vtable = &MSVCP_ios_base_vtable;
223     return NULL;
224 }
225
226 /* ??0ios_base@std@@QAE@ABV01@@Z */
227 /* ??0ios_base@std@@QEAA@AEBV01@@Z */
228 DEFINE_THISCALL_WRAPPER(ios_base_copy_ctor, 8)
229 ios_base* __thiscall ios_base_copy_ctor(ios_base *this, const ios_base *copy)
230 {
231     FIXME("(%p %p) stub\n", this, copy);
232     return NULL;
233 }
234
235 /* ??1ios_base@std@@UAE@XZ */
236 /* ??1ios_base@std@@UEAA@XZ */
237 DEFINE_THISCALL_WRAPPER(ios_base_dtor, 4)
238 void __thiscall ios_base_dtor(ios_base *this)
239 {
240     FIXME("(%p) stub\n", this);
241 }
242
243 DEFINE_THISCALL_WRAPPER(MSVCP_ios_base_vector_dtor, 8)
244 ios_base* __thiscall MSVCP_ios_base_vector_dtor(ios_base *this, unsigned int flags)
245 {
246     TRACE("(%p %x) stub\n", this, flags);
247     if(flags & 2) {
248         /* we have an array, with the number of elements stored before the first object */
249         int i, *ptr = (int *)this-1;
250
251         for(i=*ptr-1; i>=0; i--)
252             ios_base_dtor(this+i);
253         MSVCRT_operator_delete(ptr);
254     } else {
255         ios_base_dtor(this);
256         if(flags & 1)
257             MSVCRT_operator_delete(this);
258     }
259
260     return this;
261 }
262
263 /* ??4ios_base@std@@QAEAAV01@ABV01@@Z */
264 /* ??4ios_base@std@@QEAAAEAV01@AEBV01@@Z */
265 DEFINE_THISCALL_WRAPPER(ios_base_assign, 8)
266 ios_base* __thiscall ios_base_assign(ios_base *this, const ios_base *right)
267 {
268     FIXME("(%p %p) stub\n", this, right);
269     return NULL;
270 }
271
272 /* ??7ios_base@std@@QBE_NXZ */
273 /* ??7ios_base@std@@QEBA_NXZ */
274 DEFINE_THISCALL_WRAPPER(ios_base_op_succ, 4)
275 MSVCP_bool __thiscall ios_base_op_succ(const ios_base *this)
276 {
277     FIXME("(%p) stub\n", this);
278     return FALSE;
279 }
280
281 /* ??Bios_base@std@@QBEPAXXZ */
282 /* ??Bios_base@std@@QEBAPEAXXZ */
283 DEFINE_THISCALL_WRAPPER(ios_base_op_fail, 4)
284 void* __thiscall ios_base_op_fail(const ios_base *this)
285 {
286     FIXME("(%p) stub\n", this);
287     return NULL;
288 }
289
290 /* ?_Addstd@ios_base@std@@SAXPAV12@@Z */
291 /* ?_Addstd@ios_base@std@@SAXPEAV12@@Z */
292 void CDECL ios_base_Addstd(ios_base *add)
293 {
294     FIXME("(%p) stub\n", add);
295 }
296
297 /* ?_Callfns@ios_base@std@@AAEXW4event@12@@Z */
298 /* ?_Callfns@ios_base@std@@AEAAXW4event@12@@Z */
299 DEFINE_THISCALL_WRAPPER(ios_base_Callfns, 8)
300 void __thiscall ios_base_Callfns(ios_base *this, IOS_BASE_event event)
301 {
302     FIXME("(%p %x) stub\n", this, event);
303 }
304
305 /* ?_Findarr@ios_base@std@@AAEAAU_Iosarray@12@H@Z */
306 /* ?_Findarr@ios_base@std@@AEAAAEAU_Iosarray@12@H@Z */
307 DEFINE_THISCALL_WRAPPER(ios_base_Findarr, 8)
308 IOS_BASE_iosarray* __thiscall ios_base_Findarr(ios_base *this, int index)
309 {
310     FIXME("(%p %d) stub\n", this, index);
311     return NULL;
312 }
313
314 /* ?_Index_func@ios_base@std@@CAAAHXZ */
315 /* ?_Index_func@ios_base@std@@CAAEAHXZ */
316 int* CDECL ios_base_Index_func(void)
317 {
318     TRACE("\n");
319     return &ios_base_Index;
320 }
321
322 /* ?_Init@ios_base@std@@IAEXXZ */
323 /* ?_Init@ios_base@std@@IEAAXXZ */
324 DEFINE_THISCALL_WRAPPER(ios_base_Init, 4)
325 void __thiscall ios_base_Init(ios_base *this)
326 {
327     FIXME("(%p) stub\n", this);
328 }
329
330 /* ?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z */
331 /* ?_Ios_base_dtor@ios_base@std@@CAXPEAV12@@Z */
332 void CDECL ios_base_Ios_base_dtor(ios_base *obj)
333 {
334     FIXME("(%p) stub\n", obj);
335 }
336
337 /* ?_Sync_func@ios_base@std@@CAAA_NXZ */
338 /* ?_Sync_func@ios_base@std@@CAAEA_NXZ */
339 MSVCP_bool* CDECL ios_base_Sync_func(void)
340 {
341     TRACE("\n");
342     return &ios_base_Sync;
343 }
344
345 /* ?_Tidy@ios_base@std@@AAAXXZ */
346 /* ?_Tidy@ios_base@std@@AEAAXXZ */
347 void CDECL ios_base_Tidy(void)
348 {
349     FIXME("stub\n");
350 }
351
352 /* ?bad@ios_base@std@@QBE_NXZ */
353 /* ?bad@ios_base@std@@QEBA_NXZ */
354 DEFINE_THISCALL_WRAPPER(ios_base_bad, 4)
355 MSVCP_bool __thiscall ios_base_bad(const ios_base *this)
356 {
357     FIXME("(%p) stub\n", this);
358     return FALSE;
359 }
360
361 /* ?clear@ios_base@std@@QAEXH_N@Z */
362 /* ?clear@ios_base@std@@QEAAXH_N@Z */
363 DEFINE_THISCALL_WRAPPER(ios_base_clear_reraise, 12)
364 void __thiscall ios_base_clear_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise)
365 {
366     FIXME("(%p %x %x) stub\n", this, state, reraise);
367 }
368
369 /* ?clear@ios_base@std@@QAEXH@Z */
370 /* ?clear@ios_base@std@@QEAAXH@Z */
371 DEFINE_THISCALL_WRAPPER(ios_base_clear, 8)
372 void __thiscall ios_base_clear(ios_base *this, IOSB_iostate state)
373 {
374     ios_base_clear_reraise(this, state, FALSE);
375 }
376
377 /* ?clear@ios_base@std@@QAEXI@Z */
378 /* ?clear@ios_base@std@@QEAAXI@Z */
379 DEFINE_THISCALL_WRAPPER(ios_base_clear_unsigned, 8)
380 void __thiscall ios_base_clear_unsigned(ios_base *this, unsigned int state)
381 {
382     ios_base_clear_reraise(this, (IOSB_iostate)state, FALSE);
383 }
384
385 /* ?copyfmt@ios_base@std@@QAEAAV12@ABV12@@Z */
386 /* ?copyfmt@ios_base@std@@QEAAAEAV12@AEBV12@@Z */
387 DEFINE_THISCALL_WRAPPER(ios_base_copyfmt, 8)
388 ios_base* __thiscall ios_base_copyfmt(ios_base *this, const ios_base *obj)
389 {
390     FIXME("(%p %p) stub\n", this, obj);
391     return NULL;
392 }
393
394 /* ?eof@ios_base@std@@QBE_NXZ */
395 /* ?eof@ios_base@std@@QEBA_NXZ */
396 DEFINE_THISCALL_WRAPPER(ios_base_eof, 4)
397 MSVCP_bool __thiscall ios_base_eof(const ios_base *this)
398 {
399     FIXME("(%p) stub\n", this);
400     return FALSE;
401 }
402
403 /* ?exceptions@ios_base@std@@QAEXH@Z */
404 /* ?exceptions@ios_base@std@@QEAAXH@Z */
405 DEFINE_THISCALL_WRAPPER(ios_base_exception_set, 8)
406 void __thiscall ios_base_exception_set(ios_base *this, IOSB_iostate state)
407 {
408     FIXME("(%p %x) stub\n", this, state);
409 }
410
411 /* ?exceptions@ios_base@std@@QAEXI@Z */
412 /* ?exceptions@ios_base@std@@QEAAXI@Z */
413 DEFINE_THISCALL_WRAPPER(ios_base_exception_set_unsigned, 8)
414 void __thiscall ios_base_exception_set_unsigned(ios_base *this, unsigned int state)
415 {
416     FIXME("(%p %x) stub\n", this, state);
417 }
418
419 /* ?exceptions@ios_base@std@@QBEHXZ */
420 /* ?exceptions@ios_base@std@@QEBAHXZ */
421 DEFINE_THISCALL_WRAPPER(ios_base_exception_get, 4)
422 IOSB_iostate __thiscall ios_base_exception_get(ios_base *this)
423 {
424     FIXME("(%p) stub\n", this);
425     return 0;
426 }
427
428 /* ?fail@ios_base@std@@QBE_NXZ */
429 /* ?fail@ios_base@std@@QEBA_NXZ */
430 DEFINE_THISCALL_WRAPPER(ios_base_fail, 4)
431 MSVCP_bool __thiscall ios_base_fail(ios_base *this)
432 {
433     FIXME("(%p) stub\n", this);
434     return 0;
435 }
436
437 /* ?flags@ios_base@std@@QAEHH@Z */
438 /* ?flags@ios_base@std@@QEAAHH@Z */
439 DEFINE_THISCALL_WRAPPER(ios_base_flags_set, 8)
440 IOSB_fmtflags __thiscall ios_base_flags_set(ios_base *this, IOSB_fmtflags flags)
441 {
442     FIXME("(%p %x) stub\n", this, flags);
443     return 0;
444 }
445
446 /* ?flags@ios_base@std@@QBEHXZ */
447 /* ?flags@ios_base@std@@QEBAHXZ */
448 DEFINE_THISCALL_WRAPPER(ios_base_flags_get, 4)
449 IOSB_fmtflags __thiscall ios_base_flags_get(const ios_base *this)
450 {
451     FIXME("(%p) stub\n", this);
452     return 0;
453 }
454
455 /* ?getloc@ios_base@std@@QBE?AVlocale@2@XZ */
456 /* ?getloc@ios_base@std@@QEBA?AVlocale@2@XZ */
457 DEFINE_THISCALL_WRAPPER(ios_base_getloc, 8)
458 locale* __thiscall ios_base_getloc(const ios_base *this, locale *ret)
459 {
460     FIXME("(%p) stub\n", this);
461     return ret;
462 }
463
464 /* ?good@ios_base@std@@QBE_NXZ */
465 /* ?good@ios_base@std@@QEBA_NXZ */
466 DEFINE_THISCALL_WRAPPER(ios_base_good, 4)
467 MSVCP_bool __thiscall ios_base_good(const ios_base *this)
468 {
469     FIXME("(%p) stub\n", this);
470     return FALSE;
471 }
472
473 /* ?imbue@ios_base@std@@QAE?AVlocale@2@ABV32@@Z */
474 /* ?imbue@ios_base@std@@QEAA?AVlocale@2@AEBV32@@Z */
475 DEFINE_THISCALL_WRAPPER(ios_base_imbue, 12)
476 locale* __thiscall ios_base_imbue(ios_base *this, locale *ret, const locale *loc)
477 {
478     FIXME("(%p %p) stub\n", this, loc);
479     return ret;
480 }
481
482 /* ?iword@ios_base@std@@QAEAAJH@Z */
483 /* ?iword@ios_base@std@@QEAAAEAJH@Z */
484 DEFINE_THISCALL_WRAPPER(ios_base_iword, 8)
485 LONG* __thiscall ios_base_iword(ios_base *this, int index)
486 {
487     FIXME("(%p %d) stub\n", this, index);
488     return NULL;
489 }
490
491 /* ?precision@ios_base@std@@QAEHH@Z */
492 /* ?precision@ios_base@std@@QEAA_J_J@Z */
493 DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 8)
494 MSVCP_size_t __thiscall ios_base_precision_set(ios_base *this, MSVCP_size_t precision)
495 {
496     FIXME("(%p %lu) stub\n", this, precision);
497     return 0;
498 }
499
500 /* ?precision@ios_base@std@@QBEHXZ */
501 /* ?precision@ios_base@std@@QEBA_JXZ */
502 DEFINE_THISCALL_WRAPPER(ios_base_precision_get, 4)
503 MSVCP_size_t __thiscall ios_base_precision_get(const ios_base *this)
504 {
505     FIXME("(%p) stub\n", this);
506     return 0;
507 }
508
509 /* ?pword@ios_base@std@@QAEAAPAXH@Z */
510 /* ?pword@ios_base@std@@QEAAAEAPEAXH@Z */
511 DEFINE_THISCALL_WRAPPER(ios_base_pword, 8)
512 void** __thiscall ios_base_pword(ios_base *this, int index)
513 {
514     FIXME("(%p %d) stub\n", this, index);
515     return NULL;
516 }
517
518 /* ?rdstate@ios_base@std@@QBEHXZ */
519 /* ?rdstate@ios_base@std@@QEBAHXZ */
520 DEFINE_THISCALL_WRAPPER(ios_base_rdstate, 4)
521 IOSB_iostate __thiscall ios_base_rdstate(const ios_base *this)
522 {
523     FIXME("(%p) stub\n", this);
524     return 0;
525 }
526
527 /* ?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z */
528 /* ?register_callback@ios_base@std@@QEAAXP6AXW4event@12@AEAV12@H@ZH@Z */
529 DEFINE_THISCALL_WRAPPER(ios_base_register_callback, 12)
530 void __thiscall ios_base_register_callback(ios_base *this, IOS_BASE_event_callback callback, int index)
531 {
532     FIXME("(%p %p %d) stub\n", this, callback, index);
533 }
534
535 /* ?setf@ios_base@std@@QAEHHH@Z */
536 /* ?setf@ios_base@std@@QEAAHHH@Z */
537 DEFINE_THISCALL_WRAPPER(ios_base_setf_mask, 12)
538 IOSB_fmtflags __thiscall ios_base_setf_mask(ios_base *this, IOSB_fmtflags flags, IOSB_fmtflags mask)
539 {
540     FIXME("(%p %x %x) stub\n", this, flags, mask);
541     return 0;
542 }
543
544 /* ?setf@ios_base@std@@QAEHH@Z */
545 /* ?setf@ios_base@std@@QEAAHH@Z */
546 DEFINE_THISCALL_WRAPPER(ios_base_setf, 8)
547 IOSB_fmtflags __thiscall ios_base_setf(ios_base *this, IOSB_fmtflags flags)
548 {
549     return ios_base_setf_mask(this, flags, ~0);
550 }
551
552 /* ?setstate@ios_base@std@@QAEXH_N@Z */
553 /* ?setstate@ios_base@std@@QEAAXH_N@Z */
554 DEFINE_THISCALL_WRAPPER(ios_base_setstate_reraise, 12)
555 void __thiscall ios_base_setstate_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise)
556 {
557     FIXME("(%p %x %x) stub\n", this, state, reraise);
558 }
559
560 /* ?setstate@ios_base@std@@QAEXH@Z */
561 /* ?setstate@ios_base@std@@QEAAXH@Z */
562 DEFINE_THISCALL_WRAPPER(ios_base_setstate, 8)
563 void __thiscall ios_base_setstate(ios_base *this, IOSB_iostate state)
564 {
565     ios_base_setstate_reraise(this, state, FALSE);
566 }
567
568 /* ?setstate@ios_base@std@@QAEXI@Z */
569 /* ?setstate@ios_base@std@@QEAAXI@Z */
570 DEFINE_THISCALL_WRAPPER(ios_base_setstate_unsigned, 8)
571 void __thiscall ios_base_setstate_unsigned(ios_base *this, unsigned int state)
572 {
573     ios_base_setstate_reraise(this, (IOSB_iostate)state, FALSE);
574 }
575
576 /* ?sync_with_stdio@ios_base@std@@SA_N_N@Z */
577 MSVCP_bool CDECL ios_base_sync_with_stdio(MSVCP_bool sync)
578 {
579     FIXME("(%x) stub\n", sync);
580     return FALSE;
581 }
582
583 /* ?unsetf@ios_base@std@@QAEXH@Z */
584 /* ?unsetf@ios_base@std@@QEAAXH@Z */
585 DEFINE_THISCALL_WRAPPER(ios_base_unsetf, 8)
586 void __thiscall ios_base_unsetf(ios_base *this, IOSB_fmtflags flags)
587 {
588     FIXME("(%p %x) stub\n", this, flags);
589 }
590
591 /* ?width@ios_base@std@@QAEHH@Z */
592 /* ?width@ios_base@std@@QEAA_J_J@Z */
593 DEFINE_THISCALL_WRAPPER(ios_base_width_set, 8)
594 MSVCP_size_t __thiscall ios_base_width_set(ios_base *this, MSVCP_size_t width)
595 {
596     FIXME("(%p %lu) stub\n", this, width);
597     return 0;
598 }
599
600 /* ?width@ios_base@std@@QBEHXZ */
601 /* ?width@ios_base@std@@QEBA_JXZ */
602 DEFINE_THISCALL_WRAPPER(ios_base_width_get, 4)
603 MSVCP_size_t __thiscall ios_base_width_get(ios_base *this)
604 {
605     FIXME("(%p) stub\n", this);
606     return 0;
607 }
608
609 /* ?xalloc@ios_base@std@@SAHXZ */
610 int CDECL ios_base_xalloc(void)
611 {
612     FIXME("stub\n");
613     return 0;
614 }
615
616 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ */
617 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ */
618 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor, 4)
619 basic_ios_char* __thiscall basic_ios_char_ctor(basic_ios_char *this)
620 {
621     FIXME("(%p) stub\n", this);
622     return NULL;
623 }
624
625 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
626 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
627 DEFINE_THISCALL_WRAPPER(basic_ios_char_copy_ctor, 8)
628 basic_ios_char* __thiscall basic_ios_char_copy_ctor(basic_ios_char *this, const basic_ios_char *copy)
629 {
630     FIXME("(%p %p) stub\n", this, copy);
631     return NULL;
632 }
633
634 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ */
635 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ */
636 DEFINE_THISCALL_WRAPPER(basic_ios_char_dtor, 4)
637 void __thiscall basic_ios_char_dtor(basic_ios_char *this)
638 {
639     FIXME("(%p) stub\n", this);
640 }
641
642 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ios_char_vector_dtor, 8)
643 basic_ios_char* __thiscall MSVCP_basic_ios_char_vector_dtor(basic_ios_char *this, unsigned int flags)
644 {
645     TRACE("(%p %x) stub\n", this, flags);
646     if(flags & 2) {
647         /* we have an array, with the number of elements stored before the first object */
648         int i, *ptr = (int *)this-1;
649
650         for(i=*ptr-1; i>=0; i--)
651             basic_ios_char_dtor(this+i);
652         MSVCRT_operator_delete(ptr);
653     } else {
654         basic_ios_char_dtor(this);
655         if(flags & 1)
656             MSVCRT_operator_delete(this);
657     }
658
659     return this;
660 }
661
662 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
663 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
664 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear_reraise, 12)
665 void __thiscall basic_ios_char_clear_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise)
666 {
667     FIXME("(%p %x %x) stub\n", this, state, reraise);
668 }
669
670 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
671 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
672 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear, 8)
673 void __thiscall basic_ios_char_clear(basic_ios_char *this, unsigned int state)
674 {
675     basic_ios_char_clear_reraise(this, (IOSB_iostate)state, FALSE);
676 }
677
678 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEAAV12@ABV12@@Z */
679 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEBV12@@Z */
680 DEFINE_THISCALL_WRAPPER(basic_ios_char_copyfmt, 8)
681 basic_ios_char* __thiscall basic_ios_char_copyfmt(basic_ios_char *this, basic_ios_char *copy)
682 {
683     FIXME("(%p %p) stub\n", this, copy);
684     return NULL;
685 }
686
687 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEDD@Z */
688 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAADD@Z */
689 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_set, 8)
690 char __thiscall basic_ios_char_fill_set(basic_ios_char *this, char fill)
691 {
692     FIXME("(%p %c) stub\n", this, fill);
693     return 0;
694 }
695
696 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ */
697 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ */
698 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_get, 4)
699 char __thiscall basic_ios_char_fill_get(basic_ios_char *this)
700 {
701     FIXME("(%p) stub\n", this);
702     return 0;
703 }
704
705 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
706 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
707 DEFINE_THISCALL_WRAPPER(basic_ios_char_imbue, 12)
708 locale *__thiscall basic_ios_char_imbue(basic_ios_char *this, locale *ret, const locale *loc)
709 {
710     FIXME("(%p %p %p) stub\n", this, ret, loc);
711     return ret;
712 }
713
714 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IAEXPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
715 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
716 DEFINE_THISCALL_WRAPPER(basic_ios_char_init, 12)
717 void __thiscall basic_ios_char_init(basic_ios_char *this, basic_streambuf_char *streambuf, MSVCP_bool isstd)
718 {
719     FIXME("(%p %p %x) stub\n", this, streambuf, isstd);
720 }
721
722 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDDD@Z */
723 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADDD@Z */
724 DEFINE_THISCALL_WRAPPER(basic_ios_char_narrow, 12)
725 char __thiscall basic_ios_char_narrow(basic_ios_char *this, char ch, char def)
726 {
727     FIXME("(%p %c %c) stub\n", this, ch, def);
728     return def;
729 }
730
731 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PAV32@@Z */
732 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAV32@@Z */
733 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_set, 8)
734 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_set(basic_ios_char *this, basic_streambuf_char *streambuf)
735 {
736     FIXME("(%p %p) stub\n", this, streambuf);
737     return NULL;
738 }
739
740 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
741 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
742 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_get, 4)
743 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_get(const basic_ios_char *this)
744 {
745     FIXME("(%p) stub\n", this);
746     return NULL;
747 }
748
749 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
750 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
751 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate_reraise, 12)
752 void __thiscall basic_ios_char_setstate_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise)
753 {
754     FIXME("(%p %x %x) stub\n", this, state, reraise);
755 }
756
757 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
758 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
759 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate, 8)
760 void __thiscall basic_ios_char_setstate(basic_ios_char *this, unsigned int state)
761 {
762     basic_ios_char_setstate_reraise(this, (IOSB_iostate)state, FALSE);
763 }
764
765 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@PAV32@@Z */
766 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@PEAV32@@Z */
767 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_set, 8)
768 basic_ostream_char* __thiscall basic_ios_char_tie_set(basic_ios_char *this, basic_ostream_char *ostream)
769 {
770     FIXME("(%p %p) stub\n", this, ostream);
771     return NULL;
772 }
773
774 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
775 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
776 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_get, 4)
777 basic_ostream_char* __thiscall basic_ios_char_tie_get(const basic_ios_char *this)
778 {
779     FIXME("(%p)\n", this);
780     return NULL;
781 }
782
783 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z */
784 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z */
785 DEFINE_THISCALL_WRAPPER(basic_ios_char_widen, 8)
786 char __thiscall basic_ios_char_widen(basic_ios_char *this, char ch)
787 {
788     FIXME("(%p %c)\n", this, ch);
789     return 0;
790 }
791
792
793 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
794 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
795 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor, 4)
796 basic_ios_wchar* __thiscall basic_ios_wchar_ctor(basic_ios_wchar *this)
797 {
798     FIXME("(%p) stub\n", this);
799     return NULL;
800 }
801
802 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
803 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
804 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_copy_ctor, 8)
805 basic_ios_wchar* __thiscall basic_ios_wchar_copy_ctor(basic_ios_wchar *this, const basic_ios_wchar *copy)
806 {
807     FIXME("(%p %p) stub\n", this, copy);
808     return NULL;
809 }
810
811 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
812 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
813 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_dtor, 4)
814 void __thiscall basic_ios_wchar_dtor(basic_ios_wchar *this)
815 {
816     FIXME("(%p) stub\n", this);
817 }
818
819 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ios_wchar_vector_dtor, 8)
820 basic_ios_wchar* __thiscall MSVCP_basic_ios_wchar_vector_dtor(basic_ios_wchar *this, unsigned int flags)
821 {
822     TRACE("(%p %x) stub\n", this, flags);
823     if(flags & 2) {
824         /* we have an array, with the number of elements stored before the first object */
825         int i, *ptr = (int *)this-1;
826
827         for(i=*ptr-1; i>=0; i--)
828             basic_ios_wchar_dtor(this+i);
829         MSVCRT_operator_delete(ptr);
830     } else {
831         basic_ios_wchar_dtor(this);
832         if(flags & 1)
833             MSVCRT_operator_delete(this);
834     }
835
836     return this;
837 }
838
839 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
840 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
841 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear_reraise, 12)
842 void __thiscall basic_ios_wchar_clear_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise)
843 {
844     FIXME("(%p %x %x) stub\n", this, state, reraise);
845 }
846
847 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
848 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
849 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear, 8)
850 void __thiscall basic_ios_wchar_clear(basic_ios_wchar *this, unsigned int state)
851 {
852     basic_ios_wchar_clear_reraise(this, (IOSB_iostate)state, FALSE);
853 }
854
855 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEAAV12@ABV12@@Z */
856 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEBV12@@Z */
857 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_copyfmt, 8)
858 basic_ios_wchar* __thiscall basic_ios_wchar_copyfmt(basic_ios_wchar *this, basic_ios_wchar *copy)
859 {
860     FIXME("(%p %p) stub\n", this, copy);
861     return NULL;
862 }
863
864 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE_W_W@Z */
865 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA_W_W@Z */
866 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_set, 8)
867 wchar_t __thiscall basic_ios_wchar_fill_set(basic_ios_wchar *this, wchar_t fill)
868 {
869     FIXME("(%p %c) stub\n", this, fill);
870     return 0;
871 }
872
873 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WXZ */
874 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WXZ */
875 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_get, 4)
876 wchar_t __thiscall basic_ios_wchar_fill_get(basic_ios_wchar *this)
877 {
878     FIXME("(%p) stub\n", this);
879     return 0;
880 }
881
882 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
883 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
884 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_imbue, 12)
885 locale *__thiscall basic_ios_wchar_imbue(basic_ios_wchar *this, locale *ret, const locale *loc)
886 {
887     FIXME("(%p %p %p) stub\n", this, ret, loc);
888     return ret;
889 }
890
891 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
892 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
893 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_init, 12)
894 void __thiscall basic_ios_wchar_init(basic_ios_wchar *this, /*basic_streambuf_wchar*/void *streambuf, MSVCP_bool isstd)
895 {
896     FIXME("(%p %p %x) stub\n", this, streambuf, isstd);
897 }
898
899 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBED_WD@Z */
900 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAD_WD@Z */
901 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_narrow, 12)
902 char __thiscall basic_ios_wchar_narrow(basic_ios_wchar *this, wchar_t ch, char def)
903 {
904     FIXME("(%p %c %c) stub\n", this, ch, def);
905     return def;
906 }
907
908 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
909 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
910 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_set, 8)
911 /*basic_streambuf_wchar*/void* __thiscall basic_ios_wchar_rdbuf_set(basic_ios_wchar *this, /*basic_streambuf_wchar*/void *streambuf)
912 {
913     FIXME("(%p %p) stub\n", this, streambuf);
914     return NULL;
915 }
916
917 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
918 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
919 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_get, 4)
920 /*basic_streambuf_wchar*/void* __thiscall basic_ios_wchar_rdbuf_get(const basic_ios_wchar *this)
921 {
922     FIXME("(%p) stub\n", this);
923     return NULL;
924 }
925
926 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
927 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
928 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate_reraise, 12)
929 void __thiscall basic_ios_wchar_setstate_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise)
930 {
931     FIXME("(%p %x %x) stub\n", this, state, reraise);
932 }
933
934 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
935 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
936 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate, 8)
937 void __thiscall basic_ios_wchar_setstate(basic_ios_wchar *this, IOSB_iostate state)
938 {
939     basic_ios_wchar_setstate_reraise(this, state, FALSE);
940 }
941
942 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
943 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
944 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_set, 8)
945 /*basic_ostream_wchar*/void* __thiscall basic_ios_wchar_tie_set(basic_ios_wchar *this, /*basic_ostream_wchar*/void *ostream)
946 {
947     FIXME("(%p %p) stub\n", this, ostream);
948     return NULL;
949 }
950
951 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
952 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
953 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_get, 4)
954 /*basic_ostream_wchar*/void* __thiscall basic_ios_wchar_tie_get(const basic_ios_wchar *this)
955 {
956     FIXME("(%p)\n", this);
957     return NULL;
958 }
959
960 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WD@Z */
961 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WD@Z */
962 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_widen, 8)
963 wchar_t __thiscall basic_ios_wchar_widen(basic_ios_wchar *this, char ch)
964 {
965     FIXME("(%p %c)\n", this, ch);
966     return 0;
967 }
968
969 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@W4_Uninitialized@1@@Z */
970 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
971 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor_uninitialized, 8)
972 basic_streambuf_char* __thiscall basic_streambuf_char_ctor_uninitialized(basic_streambuf_char *this, int uninitialized)
973 {
974     TRACE("(%p %d)\n", this, uninitialized);
975     this->vtable = &MSVCP_basic_streambuf_char_vtable;
976     mutex_ctor(&this->lock);
977     return this;
978 }
979
980 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ */
981 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ */
982 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor, 4)
983 basic_streambuf_char* __thiscall basic_streambuf_char_ctor(basic_streambuf_char *this)
984 {
985     TRACE("(%p)\n", this);
986
987     this->vtable = &MSVCP_basic_streambuf_char_vtable;
988     mutex_ctor(&this->lock);
989     this->loc = MSVCRT_operator_new(sizeof(locale));
990     locale_ctor(this->loc);
991     basic_streambuf_char__Init_empty(this);
992
993     return this;
994 }
995
996 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
997 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
998 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_dtor, 4)
999 void __thiscall basic_streambuf_char_dtor(basic_streambuf_char *this)
1000 {
1001     TRACE("(%p)\n", this);
1002
1003     mutex_dtor(&this->lock);
1004     locale_dtor(this->loc);
1005     MSVCRT_operator_delete(this->loc);
1006 }
1007
1008 DEFINE_THISCALL_WRAPPER(MSVCP_basic_streambuf_char_vector_dtor, 8)
1009 basic_streambuf_char* __thiscall MSVCP_basic_streambuf_char_vector_dtor(basic_streambuf_char *this, unsigned int flags)
1010 {
1011     TRACE("(%p %x)\n", this, flags);
1012     if(flags & 2) {
1013         /* we have an array, with the number of elements stored before the first object */
1014         int i, *ptr = (int *)this-1;
1015
1016         for(i=*ptr-1; i>=0; i--)
1017             basic_streambuf_char_dtor(this+i);
1018         MSVCRT_operator_delete(ptr);
1019     } else {
1020         basic_streambuf_char_dtor(this);
1021         if(flags & 1)
1022             MSVCRT_operator_delete(this);
1023     }
1024
1025     return this;
1026 }
1027
1028 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
1029 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
1030 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnavail, 4)
1031 streamsize __thiscall basic_streambuf_char__Gnavail(const basic_streambuf_char *this)
1032 {
1033     TRACE("(%p)\n", this);
1034     return *this->prpos ? *this->prsize : 0;
1035 }
1036
1037 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1038 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1039 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gndec, 4)
1040 char* __thiscall basic_streambuf_char__Gndec(basic_streambuf_char *this)
1041 {
1042     TRACE("(%p)\n", this);
1043     (*this->prsize)++;
1044     (*this->prpos)--;
1045     return *this->prpos;
1046 }
1047
1048 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1049 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1050 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gninc, 4)
1051 char* __thiscall basic_streambuf_char__Gninc(basic_streambuf_char *this)
1052 {
1053     TRACE("(%p)\n", this);
1054     (*this->prsize)--;
1055     return (*this->prpos)++;
1056 }
1057
1058 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1059 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1060 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnpreinc, 4)
1061 char* __thiscall basic_streambuf_char__Gnpreinc(basic_streambuf_char *this)
1062 {
1063     TRACE("(%p)\n", this);
1064     (*this->prsize)--;
1065     (*this->prpos)++;
1066     return *this->prpos;
1067 }
1068
1069 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAPAD0PAH001@Z */
1070 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAPEAD0PEAH001@Z */
1071 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init, 28)
1072 void __thiscall basic_streambuf_char__Init(basic_streambuf_char *this, char **gf, char **gn, int *gc, char **pf, char **pn, int *pc)
1073 {
1074     TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
1075
1076     this->prbuf = gf;
1077     this->pwbuf = pf;
1078     this->prpos = gn;
1079     this->pwpos = pn;
1080     this->prsize = gc;
1081     this->pwsize = pc;
1082 }
1083
1084 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXXZ */
1085 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */
1086 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init_empty, 4)
1087 void __thiscall basic_streambuf_char__Init_empty(basic_streambuf_char *this)
1088 {
1089     TRACE("(%p)\n", this);
1090
1091     this->prbuf = &this->rbuf;
1092     this->pwbuf = &this->wbuf;
1093     this->prpos = &this->rpos;
1094     this->pwpos = &this->wpos;
1095     this->prsize = &this->rsize;
1096     this->pwsize = &this->wsize;
1097
1098     basic_streambuf_char_setp(this, NULL, NULL);
1099     basic_streambuf_char_setg(this, NULL, NULL, NULL);
1100 }
1101
1102 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1103 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1104 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Lock, 4)
1105 void __thiscall basic_streambuf_char__Lock(basic_streambuf_char *this)
1106 {
1107     TRACE("(%p)\n", this);
1108     mutex_lock(&this->lock);
1109 }
1110
1111 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
1112 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
1113 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pnavail, 4)
1114 streamsize __thiscall basic_streambuf_char__Pnavail(const basic_streambuf_char *this)
1115 {
1116     TRACE("(%p)\n", this);
1117     return *this->pwpos ? *this->pwsize : 0;
1118 }
1119
1120 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
1121 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
1122 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pninc, 4)
1123 char* __thiscall basic_streambuf_char__Pninc(basic_streambuf_char *this)
1124 {
1125     TRACE("(%p)\n", this);
1126     (*this->pwsize)--;
1127     return (*this->pwpos)++;
1128 }
1129
1130 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
1131 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
1132 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Sgetn_s, 16)
1133 streamsize __thiscall basic_streambuf_char__Sgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count)
1134 {
1135     FIXME("(%p %p %lu %lu) stub\n", this, ptr, size, count);
1136     return 0;
1137 }
1138
1139 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1140 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1141 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Unlock, 4)
1142 void __thiscall basic_streambuf_char__Unlock(basic_streambuf_char *this)
1143 {
1144     TRACE("(%p)\n", this);
1145     mutex_unlock(&this->lock);
1146 }
1147
1148 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADIH@Z */
1149 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_K_J@Z */
1150 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Xsgetn_s, 16)
1151 streamsize __thiscall basic_streambuf_char__Xsgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count)
1152 {
1153     FIXME("(%p %p %lu %lu) stub\n", this, ptr, size, count);
1154     return 0;
1155 }
1156
1157 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1158 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1159 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_eback, 4)
1160 char* __thiscall basic_streambuf_char_eback(const basic_streambuf_char *this)
1161 {
1162     FIXME("(%p) stub\n", this);
1163     return NULL;
1164 }
1165
1166 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1167 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1168 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_egptr, 4)
1169 char* __thiscall basic_streambuf_char_egptr(const basic_streambuf_char *this)
1170 {
1171     FIXME("(%p) stub\n", this);
1172     return NULL;
1173 }
1174
1175 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1176 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1177 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_epptr, 4)
1178 char* __thiscall basic_streambuf_char_epptr(const basic_streambuf_char *this)
1179 {
1180     FIXME("(%p) stub\n", this);
1181     return NULL;
1182 }
1183
1184 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1185 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1186 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gbump, 8)
1187 void __thiscall basic_streambuf_char_gbump(basic_streambuf_char *this, int off)
1188 {
1189     FIXME("(%p %d) stub\n", this, off);
1190 }
1191
1192 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ */
1193 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ */
1194 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_getloc, 8)
1195 locale* __thiscall basic_streambuf_char_getloc(const basic_streambuf_char *this, locale *ret)
1196 {
1197     FIXME("(%p) stub\n", this);
1198     return ret;
1199 }
1200
1201 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1202 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1203 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gptr, 4)
1204 char* __thiscall basic_streambuf_char_gptr(const basic_streambuf_char *this)
1205 {
1206     FIXME("(%p) stub\n", this);
1207     return NULL;
1208 }
1209
1210 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
1211 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
1212 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_imbue, 8)
1213 void __thiscall basic_streambuf_char_imbue(basic_streambuf_char *this, const locale *loc)
1214 {
1215     FIXME("(%p %p) stub\n", this, loc);
1216 }
1217
1218 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1219 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JXZ */
1220 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_in_avail, 4)
1221 streamsize __thiscall basic_streambuf_char_in_avail(basic_streambuf_char *this)
1222 {
1223     FIXME("(%p) stub\n", this);
1224     return 0;
1225 }
1226
1227 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1228 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1229 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_overflow, 8)
1230 int __thiscall basic_streambuf_char_overflow(basic_streambuf_char *this, int ch)
1231 {
1232     FIXME("(%p %d) stub\n", this, ch);
1233     return 0;
1234 }
1235
1236 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1237 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1238 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbackfail, 8)
1239 int __thiscall basic_streambuf_char_pbackfail(basic_streambuf_char *this, int ch)
1240 {
1241     FIXME("(%p %d) stub\n", this, ch);
1242     return 0;
1243 }
1244
1245 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1246 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1247 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbase, 4)
1248 char* __thiscall basic_streambuf_char_pbase(const basic_streambuf_char *this)
1249 {
1250     FIXME("(%p) stub\n", this);
1251     return NULL;
1252 }
1253
1254 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1255 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1256 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbump, 8)
1257 void __thiscall basic_streambuf_char_pbump(basic_streambuf_char *this, int off)
1258 {
1259     FIXME("(%p %d) stub\n", this, off);
1260 }
1261
1262 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1263 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1264 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pptr, 4)
1265 char* __thiscall basic_streambuf_char_pptr(const basic_streambuf_char *this)
1266 {
1267     FIXME("(%p) stub\n", this);
1268     return NULL;
1269 }
1270
1271 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1272 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1273 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubimbue, 12)
1274 locale* __thiscall basic_streambuf_char_pubimbue(basic_streambuf_char *this, locale *ret, const locale *loc)
1275 {
1276     FIXME("(%p %p) stub\n", this, loc);
1277     return ret;
1278 }
1279
1280 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1281 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1282 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 20)
1283 fpos_int* __thiscall basic_streambuf_char_pubseekoff(basic_streambuf_char *this,
1284         fpos_int *ret, streamoff off, int way, int mode)
1285 {
1286     FIXME("(%p %lu %d %d) stub\n", this, off, way, mode);
1287     return ret;
1288 }
1289
1290 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
1291 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
1292 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 20)
1293 fpos_int* __thiscall basic_streambuf_char_pubseekoff_old(basic_streambuf_char *this,
1294         fpos_int *ret, streamoff off, unsigned int way, unsigned int mode)
1295 {
1296     FIXME("(%p %lu %d %d) stub\n", this, off, way, mode);
1297     return ret;
1298 }
1299
1300 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1301 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1302 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos, 36)
1303 fpos_int* __thiscall basic_streambuf_char_pubseekpos(basic_streambuf_char *this,
1304         fpos_int *ret, fpos_int pos, int mode)
1305 {
1306     FIXME("(%p %s %d) stub\n", this, debugstr_fpos_int(&pos), mode);
1307     return ret;
1308 }
1309
1310 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
1311 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
1312 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos_old, 36)
1313 fpos_int* __thiscall basic_streambuf_char_pubseekpos_old(basic_streambuf_char *this,
1314         fpos_int *ret, fpos_int pos, unsigned int mode)
1315 {
1316     FIXME("(%p %s %d) stub\n", this, debugstr_fpos_int(&pos), mode);
1317     return ret;
1318 }
1319
1320 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PADH@Z */
1321 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEAD_J@Z */
1322 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 12)
1323 basic_streambuf_char* __thiscall basic_streambuf_char_pubsetbuf(basic_streambuf_char *this, char *buf, streamsize count)
1324 {
1325     FIXME("(%p %p %lu) stub\n", this, buf, count);
1326     return NULL;
1327 }
1328
1329 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1330 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1331 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsync, 4)
1332 int __thiscall basic_streambuf_char_pubsync(basic_streambuf_char *this)
1333 {
1334     FIXME("(%p) stub\n", this);
1335     return 0;
1336 }
1337
1338 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1339 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1340 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sbumpc, 4)
1341 int __thiscall basic_streambuf_char_sbumpc(basic_streambuf_char *this)
1342 {
1343     FIXME("(%p) stub\n", this);
1344     return 0;
1345 }
1346
1347 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1348 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1349 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 20)
1350 fpos_int* __thiscall basic_streambuf_char_seekoff(basic_streambuf_char *this,
1351         fpos_int *ret, streamoff off, int way, int mode)
1352 {
1353     FIXME("(%p %lu %d %d) stub\n", this, off, way, mode);
1354     return ret;
1355 }
1356
1357 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1358 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1359 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekpos, 36)
1360 fpos_int* __thiscall basic_streambuf_char_seekpos(basic_streambuf_char *this,
1361         fpos_int *ret, fpos_int pos, int mode)
1362 {
1363     FIXME("(%p %s %d) stub\n", this, debugstr_fpos_int(&pos), mode);
1364     return ret;
1365 }
1366
1367 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PADH@Z */
1368 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z */
1369 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 12)
1370 basic_streambuf_char* __thiscall basic_streambuf_char_setbuf(basic_streambuf_char *this, char *buf, streamsize count)
1371 {
1372     FIXME("(%p %p %lu) stub\n", this, buf, count);
1373     return NULL;
1374 }
1375
1376 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
1377 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
1378 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setg, 16)
1379 void __thiscall basic_streambuf_char_setg(basic_streambuf_char *this, char *first, char *next, char *last)
1380 {
1381     TRACE("(%p %p %p %p)\n", this, first, next, last);
1382
1383     this->rbuf = first;
1384     this->rpos = next;
1385     this->rsize = last-next;
1386 }
1387
1388 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
1389 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
1390 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp_next, 16)
1391 void __thiscall basic_streambuf_char_setp_next(basic_streambuf_char *this, char *first, char *next, char *last)
1392 {
1393     TRACE("(%p %p %p %p)\n", this, first, next, last);
1394
1395     this->wbuf = first;
1396     this->wpos = next;
1397     this->wsize = last-next;
1398 }
1399
1400 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD0@Z */
1401 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD0@Z */
1402 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp, 12)
1403 void __thiscall basic_streambuf_char_setp(basic_streambuf_char *this, char *first, char *last)
1404 {
1405     basic_streambuf_char_setp_next(this, first, first, last);
1406 }
1407
1408 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1409 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1410 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetc, 4)
1411 int __thiscall basic_streambuf_char_sgetc(basic_streambuf_char *this)
1412 {
1413     FIXME("(%p) stub\n", this);
1414     return 0;
1415 }
1416
1417 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
1418 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
1419 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 12)
1420 streamsize __thiscall basic_streambuf_char_sgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1421 {
1422     FIXME("(%p %p %lu) stub\n", this, ptr, count);
1423     return 0;
1424 }
1425
1426 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1427 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ */
1428 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_showmanyc, 4)
1429 streamsize __thiscall basic_streambuf_char_showmanyc(basic_streambuf_char *this)
1430 {
1431     FIXME("(%p) stub\n", this);
1432     return 0;
1433 }
1434
1435 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1436 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1437 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_snextc, 4)
1438 int __thiscall basic_streambuf_char_snextc(basic_streambuf_char *this)
1439 {
1440     FIXME("(%p) stub\n", this);
1441     return 0;
1442 }
1443
1444 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1445 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1446 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputbackc, 8)
1447 int __thiscall basic_streambuf_char_sputbackc(basic_streambuf_char *this, char ch)
1448 {
1449     FIXME("(%p %d) stub\n", this, ch);
1450     return 0;
1451 }
1452
1453 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1454 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1455 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputc, 8)
1456 int __thiscall basic_streambuf_char_sputc(basic_streambuf_char *this, char ch)
1457 {
1458     FIXME("(%p %d) stub\n", this, ch);
1459     return 0;
1460 }
1461
1462 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z */
1463 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z */
1464 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 12)
1465 streamsize __thiscall basic_streambuf_char_sputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1466 {
1467     FIXME("(%p %p %lu) stub\n", this, ptr, count);
1468     return 0;
1469 }
1470
1471 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1472 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1473 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_stossc, 4)
1474 void __thiscall basic_streambuf_char_stossc(basic_streambuf_char *this)
1475 {
1476     FIXME("(%p) stub\n", this);
1477 }
1478
1479 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1480 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1481 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sungetc, 4)
1482 int __thiscall basic_streambuf_char_sungetc(basic_streambuf_char *this)
1483 {
1484     FIXME("(%p) stub\n", this);
1485     return 0;
1486 }
1487
1488 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1489 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1490 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sync, 4)
1491 int __thiscall basic_streambuf_char_sync(basic_streambuf_char *this)
1492 {
1493     FIXME("(%p) stub\n", this);
1494     return 0;
1495 }
1496
1497 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1498 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1499 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_uflow, 4)
1500 int __thiscall basic_streambuf_char_uflow(basic_streambuf_char *this)
1501 {
1502     FIXME("(%p) stub\n", this);
1503     return 0;
1504 }
1505
1506 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1507 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1508 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_underflow, 4)
1509 int __thiscall basic_streambuf_char_underflow(basic_streambuf_char *this)
1510 {
1511     FIXME("(%p) stub\n", this);
1512     return 0;
1513 }
1514
1515 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADH@Z */
1516 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z */
1517 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 12)
1518 streamsize __thiscall basic_streambuf_char_xsgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1519 {
1520     FIXME("(%p %p %lu) stub\n", this, ptr, count);
1521     return 0;
1522 }
1523
1524 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPBDH@Z */
1525 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z */
1526 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 12)
1527 streamsize __thiscall basic_streambuf_char_xsputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1528 {
1529     FIXME("(%p %p %lu) stub\n", this, ptr, count);
1530     return 0;
1531 }
1532
1533 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
1534 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
1535 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor, 12)
1536 basic_ostream_char* __thiscall basic_ostream_char_ctor(basic_ostream_char *this, basic_streambuf_char *strbuf, MSVCP_bool isstd)
1537 {
1538     FIXME("(%p %p %d) stub\n", this, strbuf, isstd);
1539
1540     this->vtable = &MSVCP_basic_ostream_char_vtable+1;
1541     this->child.child.vtable = &MSVCP_basic_ostream_char_vtable;
1542     return NULL;
1543 }
1544
1545 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
1546 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
1547 DEFINE_THISCALL_WRAPPER(basic_ostream_char_uninitialized, 12)
1548 basic_ostream_char* __thiscall basic_ostream_char_uninitialized(basic_ostream_char *this, int uninitialized, MSVCP_bool addstd)
1549 {
1550     FIXME("(%p %d %x) stub\n", this, uninitialized, addstd);
1551     return NULL;
1552 }
1553
1554 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
1555 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
1556 DEFINE_THISCALL_WRAPPER(basic_ostream_char_dtor, 4)
1557 void __thiscall basic_ostream_char_dtor(basic_ostream_char *this)
1558 {
1559     FIXME("(%p) stub\n", this);
1560 }
1561
1562 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostream_char_vector_dtor, 8)
1563 basic_ostream_char* __thiscall MSVCP_basic_ostream_char_vector_dtor(basic_ostream_char *this, unsigned int flags)
1564 {
1565     TRACE("(%p %x) stub\n", this, flags);
1566     if(flags & 2) {
1567         /* we have an array, with the number of elements stored before the first object */
1568         int i, *ptr = (int *)this-1;
1569
1570         for(i=*ptr-1; i>=0; i--)
1571             basic_ostream_char_dtor(this+i);
1572         MSVCRT_operator_delete(ptr);
1573     } else {
1574         basic_ostream_char_dtor(this);
1575         if(flags & 1)
1576             MSVCRT_operator_delete(this);
1577     }
1578
1579     return this;
1580 }
1581
1582 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@F@Z */
1583 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@F@Z */
1584 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_short, 8)
1585 basic_ostream_char* __thiscall basic_ostream_char_print_short(basic_ostream_char *this, short val)
1586 {
1587     FIXME("(%p %d) stub\n", this, val);
1588     return NULL;
1589 }
1590
1591 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@G@Z */
1592 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@G@Z */
1593 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ushort, 8)
1594 basic_ostream_char* __thiscall basic_ostream_char_print_ushort(basic_ostream_char *this, unsigned short val)
1595 {
1596     FIXME("(%p %d) stub\n", this, val);
1597     return NULL;
1598 }
1599
1600 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z */
1601 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z */
1602 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int, 8)
1603 basic_ostream_char* __thiscall basic_ostream_char_print_int(basic_ostream_char *this, int val)
1604 {
1605     FIXME("(%p %d) stub\n", this, val);
1606     return NULL;
1607 }
1608
1609 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@I@Z */
1610 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@I@Z */
1611 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint, 8)
1612 basic_ostream_char* __thiscall basic_ostream_char_print_uint(basic_ostream_char *this, unsigned int val)
1613 {
1614     FIXME("(%p %d) stub\n", this, val);
1615     return NULL;
1616 }
1617
1618 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@J@Z */
1619 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@J@Z */
1620 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_long, 8)
1621 basic_ostream_char* __thiscall basic_ostream_char_print_long(basic_ostream_char *this, LONG val)
1622 {
1623     FIXME("(%p %d) stub\n", this, val);
1624     return NULL;
1625 }
1626
1627 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@K@Z */
1628 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z */
1629 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ulong, 8)
1630 basic_ostream_char* __thiscall basic_ostream_char_print_ulong(basic_ostream_char *this, ULONG val)
1631 {
1632     FIXME("(%p %d) stub\n", this, val);
1633     return NULL;
1634 }
1635
1636 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@M@Z */
1637 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@M@Z */
1638 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_float, 8)
1639 basic_ostream_char* __thiscall basic_ostream_char_print_float(basic_ostream_char *this, float val)
1640 {
1641     FIXME("(%p %f) stub\n", this, val);
1642     return NULL;
1643 }
1644
1645 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@N@Z */
1646 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@N@Z */
1647 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_double, 12)
1648 basic_ostream_char* __thiscall basic_ostream_char_print_double(basic_ostream_char *this, double val)
1649 {
1650     FIXME("(%p %lf) stub\n", this, val);
1651     return NULL;
1652 }
1653
1654 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
1655 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
1656 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_streambuf, 8)
1657 basic_ostream_char* __thiscall basic_ostream_char_print_streambuf(basic_ostream_char *this, basic_streambuf_char *val)
1658 {
1659     FIXME("(%p %p) stub\n", this, val);
1660     return NULL;
1661 }
1662
1663 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PBX@Z */
1664 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEBX@Z */
1665 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ptr, 8)
1666 basic_ostream_char* __thiscall basic_ostream_char_print_ptr(basic_ostream_char *this, const void *val)
1667 {
1668     FIXME("(%p %p) stub\n", this, val);
1669     return NULL;
1670 }
1671
1672 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_J@Z */
1673 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_J@Z */
1674 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int64, 12)
1675 basic_ostream_char* __thiscall basic_ostream_char_print_int64(basic_ostream_char *this, __int64 val)
1676 {
1677     FIXME("(%p) stub\n", this);
1678     return NULL;
1679 }
1680
1681 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_K@Z */
1682 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z */
1683 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint64, 12)
1684 basic_ostream_char* __thiscall basic_ostream_char_print_uint64(basic_ostream_char *this, unsigned __int64 val)
1685 {
1686     FIXME("(%p) stub\n", this);
1687     return NULL;
1688 }
1689
1690 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_N@Z */
1691 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_N@Z */
1692 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_bool, 8)
1693 basic_ostream_char* __thiscall basic_ostream_char_print_bool(basic_ostream_char *this, MSVCP_bool val)
1694 {
1695     FIXME("(%p %x) stub\n", this, val);
1696     return NULL;
1697 }
1698
1699 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
1700 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1701 DEFINE_THISCALL_WRAPPER(basic_ostream_char__Osfx, 4)
1702 void __thiscall basic_ostream_char__Osfx(basic_ostream_char *this)
1703 {
1704     FIXME("(%p) stub\n", this);
1705 }
1706
1707 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
1708 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
1709 DEFINE_THISCALL_WRAPPER(basic_ostream_char_flush, 4)
1710 basic_ostream_char* __thiscall basic_ostream_char_flush(basic_ostream_char *this)
1711 {
1712     FIXME("(%p) stub\n", this);
1713     return NULL;
1714 }
1715
1716 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE_NXZ */
1717 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA_NXZ */
1718 DEFINE_THISCALL_WRAPPER(basic_ostream_char_opfx, 4)
1719 MSVCP_bool __thiscall basic_ostream_char_opfx(basic_ostream_char *this)
1720 {
1721     FIXME("(%p) stub\n", this);
1722     return 0;
1723 }
1724
1725 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
1726 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1727 DEFINE_THISCALL_WRAPPER(basic_ostream_char_osfx, 4)
1728 void __thiscall basic_ostream_char_osfx(basic_ostream_char *this)
1729 {
1730     FIXME("(%p) stub\n", this);
1731 }
1732
1733 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
1734 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
1735 DEFINE_THISCALL_WRAPPER(basic_ostream_char_put, 8)
1736 basic_ostream_char* __thiscall basic_ostream_char_put(basic_ostream_char *this, char ch)
1737 {
1738     FIXME("(%p %c) stub\n", this, ch);
1739     return NULL;
1740 }
1741
1742 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
1743 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
1744 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 12)
1745 basic_ostream_char* __thiscall basic_ostream_char_seekp(basic_ostream_char *this, streamoff off, int way)
1746 {
1747     FIXME("(%p %lu %d) stub\n", this, off, way);
1748     return NULL;
1749 }
1750
1751 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
1752 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
1753 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp_fpos, 28)
1754 basic_ostream_char* __thiscall basic_ostream_char_seekp_fpos(basic_ostream_char *this, fpos_int pos)
1755 {
1756     FIXME("(%p %s) stub\n", this, debugstr_fpos_int(&pos));
1757     return NULL;
1758 }
1759
1760 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
1761 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
1762 DEFINE_THISCALL_WRAPPER(basic_ostream_char_tellp, 8)
1763 fpos_int* __thiscall basic_ostream_char_tellp(basic_ostream_char *this, fpos_int *ret)
1764 {
1765     FIXME("(%p) stub\n", this);
1766     return ret;
1767 }
1768
1769 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@PBDH@Z */
1770 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEBD_J@Z */
1771 DEFINE_THISCALL_WRAPPER(basic_ostream_char_write, 12)
1772 basic_ostream_char* __thiscall basic_ostream_char_write(basic_ostream_char *this, const char *str, streamsize count)
1773 {
1774     FIXME("(%p %s %lu) stub\n", this, debugstr_a(str), count);
1775     return NULL;
1776 }