wbemprox: Return 64-bit property values as strings.
[wine/multimedia.git] / dlls / msvcp90 / ios.c
bloba39d0656c3043a27be050911878603e94d61187d
1 /*
2 * Copyright 2011 Piotr Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #include "config.h"
21 #include <stdarg.h>
22 #include <stdio.h>
23 #include <limits.h>
24 #include <share.h>
26 #include "msvcp90.h"
27 #include "windef.h"
28 #include "winbase.h"
29 #include "wine/debug.h"
30 WINE_DEFAULT_DEBUG_CHANNEL(msvcp90);
32 /* ?_Index@ios_base@std@@0HA */
33 int ios_base_Index = 0;
34 /* ?_Sync@ios_base@std@@0_NA */
35 MSVCP_bool ios_base_Sync = FALSE;
37 typedef struct {
38 streamoff off;
39 __int64 DECLSPEC_ALIGN(8) pos;
40 int state;
41 } fpos_int;
43 static inline const char* debugstr_fpos_int(fpos_int *fpos)
45 return wine_dbg_sprintf("fpos(%ld %s %d)", fpos->off, wine_dbgstr_longlong(fpos->pos), fpos->state);
48 typedef struct {
49 void (__cdecl *pfunc)(ios_base*, streamsize);
50 streamsize arg;
51 } manip_streamsize;
53 typedef enum {
54 INITFL_new = 0,
55 INITFL_open = 1,
56 INITFL_close = 2
57 } basic_filebuf__Initfl;
59 typedef struct {
60 basic_streambuf_char base;
61 codecvt_char *cvt;
62 char putback;
63 MSVCP_bool wrotesome;
64 int state;
65 MSVCP_bool close;
66 FILE *file;
67 } basic_filebuf_char;
69 typedef enum {
70 STRINGBUF_allocated = 1,
71 STRINGBUF_no_write = 2,
72 STRINGBUF_no_read = 4,
73 STRINGBUF_append = 8,
74 STRINGBUF_at_end = 16
75 } basic_stringbuf_state;
77 typedef struct {
78 basic_streambuf_char base;
79 char *seekhigh;
80 int state;
81 char allocator; /* empty struct */
82 } basic_stringbuf_char;
84 typedef struct {
85 basic_streambuf_wchar base;
86 wchar_t *seekhigh;
87 int state;
88 char allocator; /* empty struct */
89 } basic_stringbuf_wchar;
91 typedef struct {
92 ios_base base;
93 basic_streambuf_char *strbuf;
94 struct _basic_ostream_char *stream;
95 char fillch;
96 } basic_ios_char;
98 typedef struct {
99 ios_base base;
100 basic_streambuf_wchar *strbuf;
101 struct _basic_ostream_wchar *stream;
102 wchar_t fillch;
103 } basic_ios_wchar;
105 typedef struct _basic_ostream_char {
106 const int *vbtable;
107 /* virtual inheritance
108 * basic_ios_char basic_ios;
110 } basic_ostream_char;
112 typedef struct _basic_ostream_wchar {
113 const int *vbtable;
114 /* virtual inheritance
115 * basic_ios_wchar basic_ios;
117 } basic_ostream_wchar;
119 typedef struct {
120 const int *vbtable;
121 streamsize count;
122 /* virtual inheritance
123 * basic_ios_char basic_ios;
125 } basic_istream_char;
127 typedef struct {
128 const int *vbtable;
129 streamsize count;
130 /* virtual inheritance
131 * basic_ios_wchar basic_ios;
133 } basic_istream_wchar;
135 typedef struct {
136 basic_istream_char base1;
137 basic_ostream_char base2;
138 /* virtual inheritance
139 * basic_ios_char basic_ios;
141 } basic_iostream_char;
143 typedef struct {
144 basic_istream_wchar base1;
145 basic_ostream_wchar base2;
146 /* virtual inheritance
147 * basic_ios_wchar basic_ios;
149 } basic_iostream_wchar;
151 typedef struct {
152 basic_ostream_char base;
153 basic_filebuf_char filebuf;
154 /* virtual inheritance
155 * basic_ios_char basic_ios;
157 } basic_ofstream_char;
159 typedef struct {
160 basic_istream_char base;
161 basic_filebuf_char filebuf;
162 /* virtual inheritance
163 * basic_ios_char basic_ios;
165 } basic_ifstream_char;
167 typedef struct {
168 basic_iostream_char base;
169 basic_filebuf_char filebuf;
170 /* virtual inheritance
171 * basic_ios_char basic_ios;
173 } basic_fstream_char;
175 typedef struct {
176 basic_ostream_char base;
177 basic_stringbuf_char strbuf;
178 /* virtual inheritance
179 * basic_ios_char basic_ios;
181 } basic_ostringstream_char;
183 typedef struct {
184 basic_ostream_wchar base;
185 basic_stringbuf_wchar strbuf;
186 /* virtual inheritance
187 * basic_ios_wchar basic_ios;
189 } basic_ostringstream_wchar;
191 typedef struct {
192 basic_istream_char base;
193 basic_stringbuf_char strbuf;
194 /* virtual inheritance
195 * basic_ios_char basic_ios;
197 } basic_istringstream_char;
199 typedef struct {
200 basic_istream_wchar base;
201 basic_stringbuf_wchar strbuf;
202 /* virtual inheritance
203 * basic_ios_wchar basic_ios;
205 } basic_istringstream_wchar;
207 typedef struct {
208 basic_iostream_char base;
209 basic_stringbuf_char strbuf;
210 /* virtual inheritance
211 * basic_ios_char basic_ios;
213 } basic_stringstream_char;
215 typedef struct {
216 basic_iostream_wchar base;
217 basic_stringbuf_wchar strbuf;
218 /* virtual inheritance
219 * basic_ios_wchar basic_ios;
221 } basic_stringstream_wchar;
223 extern const vtable_ptr MSVCP_iosb_vtable;
225 /* ??_7ios_base@std@@6B@ */
226 extern const vtable_ptr MSVCP_ios_base_vtable;
228 /* ??_7?$basic_ios@DU?$char_traits@D@std@@@std@@6B@ */
229 extern const vtable_ptr MSVCP_basic_ios_char_vtable;
231 /* ??_7?$basic_ios@_WU?$char_traits@_W@std@@@std@@6B@ */
232 extern const vtable_ptr MSVCP_basic_ios_wchar_vtable;
234 /* ??_7?$basic_ios@GU?$char_traits@G@std@@@std@@6B@ */
235 extern const vtable_ptr MSVCP_basic_ios_short_vtable;
237 /* ??_7?$basic_streambuf@DU?$char_traits@D@std@@@std@@6B@ */
238 extern const vtable_ptr MSVCP_basic_streambuf_char_vtable;
240 /* ??_7?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@6B@ */
241 extern const vtable_ptr MSVCP_basic_streambuf_wchar_vtable;
243 /* ??_7?$basic_streambuf@GU?$char_traits@G@std@@@std@@6B@ */
244 extern const vtable_ptr MSVCP_basic_streambuf_short_vtable;
246 /* ??_7?$basic_filebuf@DU?$char_traits@D@std@@@std@@6B@ */
247 extern const vtable_ptr MSVCP_basic_filebuf_char_vtable;
249 /* ??_7?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
250 extern const vtable_ptr MSVCP_basic_stringbuf_char_vtable;
252 /* ??_7?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
253 extern const vtable_ptr MSVCP_basic_stringbuf_wchar_vtable;
255 /* ??_7?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
256 extern const vtable_ptr MSVCP_basic_stringbuf_short_vtable;
258 /* ??_8?$basic_ostream@DU?$char_traits@D@std@@@std@@7B@ */
259 const int basic_ostream_char_vbtable[] = {0, sizeof(basic_ostream_char)};
260 /* ??_7?$basic_ostream@DU?$char_traits@D@std@@@std@@6B@ */
261 extern const vtable_ptr MSVCP_basic_ostream_char_vtable;
263 /* ??_8?$basic_ostream@_WU?$char_traits@_W@std@@@std@@7B@ */
264 const int basic_ostream_wchar_vbtable[] = {0, sizeof(basic_ostream_wchar)};
265 /* ??_7?$basic_ostream@_WU?$char_traits@_W@std@@@std@@6B@ */
266 extern const vtable_ptr MSVCP_basic_ostream_wchar_vtable;
268 /* ??_8?$basic_istream@DU?$char_traits@D@std@@@std@@7B@ */
269 const int basic_istream_char_vbtable[] = {0, sizeof(basic_istream_char)};
270 /* ??_7?$basic_istream@DU?$char_traits@D@std@@@std@@6B@ */
271 extern const vtable_ptr MSVCP_basic_istream_char_vtable;
273 /* ??_8?$basic_istream@_WU?$char_traits@_W@std@@@std@@7B@ */
274 const int basic_istream_wchar_vbtable[] = {0, sizeof(basic_istream_wchar)};
275 /* ??_7?$basic_istream@_WU?$char_traits@_W@std@@@std@@6B@ */
276 extern const vtable_ptr MSVCP_basic_istream_wchar_vtable;
278 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
279 const int basic_iostream_char_vbtable1[] = {0, sizeof(basic_iostream_char)};
280 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
281 const int basic_iostream_char_vbtable2[] = {0, sizeof(basic_iostream_char)-FIELD_OFFSET(basic_iostream_char, base2)};
282 /* ??_7?$basic_iostream@DU?$char_traits@D@std@@@std@@6B@ */
283 extern const vtable_ptr MSVCP_basic_iostream_char_vtable;
285 /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
286 const int basic_iostream_wchar_vbtable1[] = {0, sizeof(basic_iostream_wchar)};
287 /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
288 const int basic_iostream_wchar_vbtable2[] = {0, sizeof(basic_iostream_wchar)-FIELD_OFFSET(basic_iostream_wchar, base2)};
289 /* ??_7?$basic_iostream@_WU?$char_traits@_W@std@@@std@@6B@ */
290 extern const vtable_ptr MSVCP_basic_iostream_wchar_vtable;
292 /* ??_8?$basic_ofstream@DU?$char_traits@D@std@@@std@@7B@ */
293 const int basic_ofstream_char_vbtable[] = {0, sizeof(basic_ofstream_char)};
294 /* ??_7?$basic_ofstream@DU?$char_traits@D@std@@@std@@6B@ */
295 extern const vtable_ptr MSVCP_basic_ofstream_char_vtable;
297 /*??_8?$basic_ifstream@DU?$char_traits@D@std@@@std@@7B@ */
298 const int basic_ifstream_char_vbtable[] = {0, sizeof(basic_ifstream_char)};
299 /* ??_7?$basic_ifstream@DU?$char_traits@D@std@@@std@@6B@ */
300 extern const vtable_ptr MSVCP_basic_ifstream_char_vtable;
302 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
303 const int basic_fstream_char_vbtable1[] = {0, sizeof(basic_fstream_char)};
304 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
305 const int basic_fstream_char_vbtable2[] = {0, sizeof(basic_fstream_char)-FIELD_OFFSET(basic_fstream_char, base.base2)};
306 /* ??_7?$basic_fstream@DU?$char_traits@D@std@@@std@@6B@ */
307 extern const vtable_ptr MSVCP_basic_fstream_char_vtable;
309 /* ??_8?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
310 const int basic_ostringstream_char_vbtable[] = {0, sizeof(basic_ostringstream_char)};
311 /* ??_7?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
312 extern const vtable_ptr MSVCP_basic_ostringstream_char_vtable;
314 /* ??_8?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */
315 const int basic_ostringstream_wchar_vbtable[] = {0, sizeof(basic_ostringstream_wchar)};
316 /* ??_7?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
317 extern const vtable_ptr MSVCP_basic_ostringstream_wchar_vtable;
319 /* ??_8?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
320 const int basic_istringstream_char_vbtable[] = {0, sizeof(basic_istringstream_char)};
321 /* ??_7?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
322 extern const vtable_ptr MSVCP_basic_istringstream_char_vtable;
324 /* ??_8?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */
325 const int basic_istringstream_wchar_vbtable[] = {0, sizeof(basic_istringstream_wchar)};
326 /* ??_7?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
327 extern const vtable_ptr MSVCP_basic_istringstream_wchar_vtable;
329 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
330 const int basic_stringstream_char_vbtable1[] = {0, sizeof(basic_stringstream_char)};
331 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
332 const int basic_stringstream_char_vbtable2[] = {0, sizeof(basic_stringstream_char)-FIELD_OFFSET(basic_stringstream_char, base.base2)};
333 /* ??_7?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
334 extern const vtable_ptr MSVCP_basic_stringstream_char_vtable;
336 /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
337 const int basic_stringstream_wchar_vbtable1[] = {0, sizeof(basic_stringstream_wchar)};
338 /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
339 const int basic_stringstream_wchar_vbtable2[] = {0, sizeof(basic_stringstream_wchar)-FIELD_OFFSET(basic_stringstream_wchar, base.base2)};
340 /* ??_7?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
341 extern const vtable_ptr MSVCP_basic_stringstream_wchar_vtable;
343 DEFINE_RTTI_DATA0(iosb, 0, ".?AV?$_Iosb@H@std@@");
344 DEFINE_RTTI_DATA1(ios_base, 0, &iosb_rtti_base_descriptor, ".?AV?$_Iosb@H@std@@");
345 DEFINE_RTTI_DATA2(basic_ios_char, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
346 ".?AV?$basic_ios@DU?$char_traits@D@std@@@std@@");
347 DEFINE_RTTI_DATA2(basic_ios_wchar, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
348 ".?AV?$basic_ios@_WU?$char_traits@_W@std@@@std@@");
349 DEFINE_RTTI_DATA2(basic_ios_short, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
350 ".?AV?$basic_ios@GU?$char_traits@G@std@@@std@@");
351 DEFINE_RTTI_DATA0(basic_streambuf_char, 0,
352 ".?AV?$basic_streambuf@DU?$char_traits@D@std@@@std@@");
353 DEFINE_RTTI_DATA0(basic_streambuf_wchar, 0,
354 ".?AV?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@");
355 DEFINE_RTTI_DATA0(basic_streambuf_short, 0,
356 ".?AV?$basic_streambuf@GU?$char_traits@G@std@@@std@@");
357 DEFINE_RTTI_DATA1(basic_filebuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
358 ".?AV?$basic_filebuf@DU?$char_traits@D@std@@@std@@");
359 DEFINE_RTTI_DATA1(basic_stringbuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
360 ".?AV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@");
361 DEFINE_RTTI_DATA1(basic_stringbuf_wchar, 0, &basic_streambuf_wchar_rtti_base_descriptor,
362 ".?AV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@");
363 DEFINE_RTTI_DATA1(basic_stringbuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
364 ".?AV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@");
365 DEFINE_RTTI_DATA3(basic_ostream_char, sizeof(basic_ostream_char), &basic_ios_char_rtti_base_descriptor,
366 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
367 ".?AV?$basic_ostream@DU?$char_traits@D@std@@@std@@");
368 DEFINE_RTTI_DATA3(basic_ostream_wchar, sizeof(basic_ostream_wchar), &basic_ios_wchar_rtti_base_descriptor,
369 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
370 ".?AV?$basic_ostream@_WU?$char_traits@_W@std@@@std@@");
371 DEFINE_RTTI_DATA3(basic_istream_char, sizeof(basic_istream_char), &basic_ios_char_rtti_base_descriptor,
372 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
373 ".?AV?$basic_istream@DU?$char_traits@D@std@@@std@@");
374 DEFINE_RTTI_DATA3(basic_istream_wchar, sizeof(basic_istream_wchar), &basic_ios_wchar_rtti_base_descriptor,
375 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
376 ".?AV?$basic_istream@_WU?$char_traits@_W@std@@@std@@");
377 DEFINE_RTTI_DATA8(basic_iostream_char, sizeof(basic_iostream_char),
378 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
379 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
380 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
381 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
382 ".?AV?$basic_iostream@DU?$char_traits@D@std@@@std@@");
383 DEFINE_RTTI_DATA8(basic_iostream_wchar, sizeof(basic_iostream_wchar),
384 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
385 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
386 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
387 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
388 ".?AV?$basic_iostream@_WU?$char_traits@_W@std@@@std@@");
389 DEFINE_RTTI_DATA4(basic_ofstream_char, sizeof(basic_ofstream_char),
390 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
391 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
392 ".?AV?$basic_ofstream@DU?$char_traits@D@std@@@std@@");
393 DEFINE_RTTI_DATA4(basic_ifstream_char, sizeof(basic_ifstream_char),
394 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
395 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
396 ".?AV?$basic_ifstream@DU?$char_traits@D@std@@@std@@");
397 DEFINE_RTTI_DATA8(basic_fstream_char, sizeof(basic_fstream_char),
398 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
399 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
400 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
401 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
402 ".?AV?$basic_fstream@DU?$char_traits@D@std@@@std@@");
403 DEFINE_RTTI_DATA4(basic_ostringstream_char, sizeof(basic_ostringstream_char),
404 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
405 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
406 ".?AV?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@");
407 DEFINE_RTTI_DATA4(basic_ostringstream_wchar, sizeof(basic_ostringstream_wchar),
408 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
409 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
410 ".?AV?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@");
411 DEFINE_RTTI_DATA4(basic_istringstream_char, sizeof(basic_istringstream_char),
412 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
413 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
414 ".?AV?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@");
415 DEFINE_RTTI_DATA4(basic_istringstream_wchar, sizeof(basic_istringstream_wchar),
416 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
417 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
418 ".?AV?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@");
419 DEFINE_RTTI_DATA8(basic_stringstream_char, sizeof(basic_stringstream_char),
420 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
421 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
422 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
423 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
424 ".?AV?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@");
425 DEFINE_RTTI_DATA8(basic_stringstream_wchar, sizeof(basic_stringstream_wchar),
426 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
427 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
428 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
429 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
430 ".?AV?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@");
432 #ifndef __GNUC__
433 void __asm_dummy_vtables(void) {
434 #endif
435 __ASM_VTABLE(iosb, "");
436 __ASM_VTABLE(ios_base, "");
437 __ASM_VTABLE(basic_ios_char, "");
438 __ASM_VTABLE(basic_ios_wchar, "");
439 __ASM_VTABLE(basic_ios_short, "");
440 __ASM_VTABLE(basic_streambuf_char,
441 VTABLE_ADD_FUNC(basic_streambuf_char_overflow)
442 VTABLE_ADD_FUNC(basic_streambuf_char_pbackfail)
443 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
444 VTABLE_ADD_FUNC(basic_streambuf_char_underflow)
445 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
446 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
447 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
448 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
449 VTABLE_ADD_FUNC(basic_streambuf_char_seekoff)
450 VTABLE_ADD_FUNC(basic_streambuf_char_seekpos)
451 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
452 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
453 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
454 __ASM_VTABLE(basic_streambuf_wchar,
455 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
456 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
457 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
458 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
459 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
460 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
461 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
462 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
463 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
464 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
465 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
466 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
467 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
468 __ASM_VTABLE(basic_streambuf_short,
469 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
470 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
471 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
472 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
473 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
474 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
475 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
476 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
477 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
478 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
479 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
480 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
481 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
482 __ASM_VTABLE(basic_filebuf_char,
483 VTABLE_ADD_FUNC(basic_filebuf_char_overflow)
484 VTABLE_ADD_FUNC(basic_filebuf_char_pbackfail)
485 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
486 VTABLE_ADD_FUNC(basic_filebuf_char_underflow)
487 VTABLE_ADD_FUNC(basic_filebuf_char_uflow)
488 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
489 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
490 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
491 VTABLE_ADD_FUNC(basic_filebuf_char_seekoff)
492 VTABLE_ADD_FUNC(basic_filebuf_char_seekpos)
493 VTABLE_ADD_FUNC(basic_filebuf_char_setbuf)
494 VTABLE_ADD_FUNC(basic_filebuf_char_sync)
495 VTABLE_ADD_FUNC(basic_filebuf_char_imbue));
496 __ASM_VTABLE(basic_stringbuf_char,
497 VTABLE_ADD_FUNC(basic_stringbuf_char_overflow)
498 VTABLE_ADD_FUNC(basic_stringbuf_char_pbackfail)
499 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
500 VTABLE_ADD_FUNC(basic_stringbuf_char_underflow)
501 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
502 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
503 VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
504 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
505 VTABLE_ADD_FUNC(basic_stringbuf_char_seekoff)
506 VTABLE_ADD_FUNC(basic_stringbuf_char_seekpos)
507 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
508 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
509 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
510 __ASM_VTABLE(basic_stringbuf_wchar,
511 VTABLE_ADD_FUNC(basic_stringbuf_wchar_overflow)
512 VTABLE_ADD_FUNC(basic_stringbuf_wchar_pbackfail)
513 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
514 VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow)
515 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
516 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
517 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
518 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
519 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff)
520 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos)
521 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
522 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
523 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
524 __ASM_VTABLE(basic_stringbuf_short,
525 VTABLE_ADD_FUNC(basic_stringbuf_wchar_overflow)
526 VTABLE_ADD_FUNC(basic_stringbuf_wchar_pbackfail)
527 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
528 VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow)
529 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
530 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
531 VTABLE_ADD_FUNC(basic_streambuf_wchar__Xsgetn_s)
532 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
533 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff)
534 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos)
535 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
536 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
537 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
538 __ASM_VTABLE(basic_ostream_char, "");
539 __ASM_VTABLE(basic_ostream_wchar, "");
540 __ASM_VTABLE(basic_istream_char, "");
541 __ASM_VTABLE(basic_istream_wchar, "");
542 __ASM_VTABLE(basic_iostream_char, "");
543 __ASM_VTABLE(basic_iostream_wchar, "");
544 __ASM_VTABLE(basic_ofstream_char, "");
545 __ASM_VTABLE(basic_ifstream_char, "");
546 __ASM_VTABLE(basic_fstream_char, "");
547 __ASM_VTABLE(basic_ostringstream_char, "");
548 __ASM_VTABLE(basic_ostringstream_wchar, "");
549 __ASM_VTABLE(basic_istringstream_char, "");
550 __ASM_VTABLE(basic_istringstream_wchar, "");
551 __ASM_VTABLE(basic_stringstream_char, "");
552 __ASM_VTABLE(basic_stringstream_wchar, "");
553 #ifndef __GNUC__
555 #endif
557 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
558 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
559 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp_next, 16)
560 void __thiscall basic_streambuf_char_setp_next(basic_streambuf_char *this, char *first, char *next, char *last)
562 TRACE("(%p %p %p %p)\n", this, first, next, last);
564 this->wbuf = first;
565 this->wpos = next;
566 this->wsize = last-next;
569 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD0@Z */
570 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD0@Z */
571 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp, 12)
572 void __thiscall basic_streambuf_char_setp(basic_streambuf_char *this, char *first, char *last)
574 basic_streambuf_char_setp_next(this, first, first, last);
577 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
578 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
579 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setg, 16)
580 void __thiscall basic_streambuf_char_setg(basic_streambuf_char *this, char *first, char *next, char *last)
582 TRACE("(%p %p %p %p)\n", this, first, next, last);
584 this->rbuf = first;
585 this->rpos = next;
586 this->rsize = last-next;
589 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXXZ */
590 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */
591 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init_empty, 4)
592 void __thiscall basic_streambuf_char__Init_empty(basic_streambuf_char *this)
594 TRACE("(%p)\n", this);
596 this->prbuf = &this->rbuf;
597 this->pwbuf = &this->wbuf;
598 this->prpos = &this->rpos;
599 this->pwpos = &this->wpos;
600 this->prsize = &this->rsize;
601 this->pwsize = &this->wsize;
603 basic_streambuf_char_setp(this, NULL, NULL);
604 basic_streambuf_char_setg(this, NULL, NULL, NULL);
607 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@W4_Uninitialized@1@@Z */
608 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
609 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor_uninitialized, 8)
610 basic_streambuf_char* __thiscall basic_streambuf_char_ctor_uninitialized(basic_streambuf_char *this, int uninitialized)
612 TRACE("(%p %d)\n", this, uninitialized);
613 this->vtable = &MSVCP_basic_streambuf_char_vtable;
614 mutex_ctor(&this->lock);
615 return this;
618 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ */
619 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ */
620 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor, 4)
621 basic_streambuf_char* __thiscall basic_streambuf_char_ctor(basic_streambuf_char *this)
623 TRACE("(%p)\n", this);
625 this->vtable = &MSVCP_basic_streambuf_char_vtable;
626 mutex_ctor(&this->lock);
627 this->loc = MSVCRT_operator_new(sizeof(locale));
628 locale_ctor(this->loc);
629 basic_streambuf_char__Init_empty(this);
631 return this;
634 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
635 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
636 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_dtor, 4)
637 void __thiscall basic_streambuf_char_dtor(basic_streambuf_char *this)
639 TRACE("(%p)\n", this);
641 mutex_dtor(&this->lock);
642 locale_dtor(this->loc);
643 MSVCRT_operator_delete(this->loc);
646 DEFINE_THISCALL_WRAPPER(MSVCP_basic_streambuf_char_vector_dtor, 8)
647 basic_streambuf_char* __thiscall MSVCP_basic_streambuf_char_vector_dtor(basic_streambuf_char *this, unsigned int flags)
649 TRACE("(%p %x)\n", this, flags);
650 if(flags & 2) {
651 /* we have an array, with the number of elements stored before the first object */
652 int i, *ptr = (int *)this-1;
654 for(i=*ptr-1; i>=0; i--)
655 basic_streambuf_char_dtor(this+i);
656 MSVCRT_operator_delete(ptr);
657 } else {
658 basic_streambuf_char_dtor(this);
659 if(flags & 1)
660 MSVCRT_operator_delete(this);
663 return this;
666 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
667 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
668 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnavail, 4)
669 streamsize __thiscall basic_streambuf_char__Gnavail(const basic_streambuf_char *this)
671 TRACE("(%p)\n", this);
672 return *this->prpos ? *this->prsize : 0;
675 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
676 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
677 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gndec, 4)
678 char* __thiscall basic_streambuf_char__Gndec(basic_streambuf_char *this)
680 TRACE("(%p)\n", this);
681 (*this->prsize)++;
682 (*this->prpos)--;
683 return *this->prpos;
686 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
687 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
688 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gninc, 4)
689 char* __thiscall basic_streambuf_char__Gninc(basic_streambuf_char *this)
691 TRACE("(%p)\n", this);
692 (*this->prsize)--;
693 return (*this->prpos)++;
696 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
697 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
698 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnpreinc, 4)
699 char* __thiscall basic_streambuf_char__Gnpreinc(basic_streambuf_char *this)
701 TRACE("(%p)\n", this);
702 (*this->prsize)--;
703 (*this->prpos)++;
704 return *this->prpos;
707 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAPAD0PAH001@Z */
708 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAPEAD0PEAH001@Z */
709 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init, 28)
710 void __thiscall basic_streambuf_char__Init(basic_streambuf_char *this, char **gf, char **gn, int *gc, char **pf, char **pn, int *pc)
712 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
714 this->prbuf = gf;
715 this->pwbuf = pf;
716 this->prpos = gn;
717 this->pwpos = pn;
718 this->prsize = gc;
719 this->pwsize = pc;
722 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
723 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
724 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Lock, 4)
725 void __thiscall basic_streambuf_char__Lock(basic_streambuf_char *this)
727 TRACE("(%p)\n", this);
728 mutex_lock(&this->lock);
731 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
732 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
733 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pnavail, 4)
734 streamsize __thiscall basic_streambuf_char__Pnavail(const basic_streambuf_char *this)
736 TRACE("(%p)\n", this);
737 return *this->pwpos ? *this->pwsize : 0;
740 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
741 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
742 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pninc, 4)
743 char* __thiscall basic_streambuf_char__Pninc(basic_streambuf_char *this)
745 TRACE("(%p)\n", this);
746 (*this->pwsize)--;
747 return (*this->pwpos)++;
750 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
751 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
752 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_underflow, 4)
753 #define call_basic_streambuf_char_underflow(this) CALL_VTBL_FUNC(this, 16, \
754 int, (basic_streambuf_char*), (this))
755 int __thiscall basic_streambuf_char_underflow(basic_streambuf_char *this)
757 TRACE("(%p)\n", this);
758 return EOF;
761 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
762 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
763 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_uflow, 4)
764 #define call_basic_streambuf_char_uflow(this) CALL_VTBL_FUNC(this, 20, \
765 int, (basic_streambuf_char*), (this))
766 int __thiscall basic_streambuf_char_uflow(basic_streambuf_char *this)
768 int ret;
770 TRACE("(%p)\n", this);
772 if(call_basic_streambuf_char_underflow(this)==EOF)
773 return EOF;
775 ret = **this->prpos;
776 (*this->prsize)--;
777 (*this->prpos)++;
778 return ret;
781 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADIH@Z */
782 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_K_J@Z */
783 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Xsgetn_s, 16)
784 #define call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count) CALL_VTBL_FUNC(this, 28, \
785 streamsize, (basic_streambuf_char*, char*, MSVCP_size_t, streamsize), (this, ptr, size, count))
786 streamsize __thiscall basic_streambuf_char__Xsgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count)
788 streamsize copied, chunk;
790 TRACE("(%p %p %lu %ld)\n", this, ptr, size, count);
792 for(copied=0; copied<count && size;) {
793 chunk = basic_streambuf_char__Gnavail(this);
794 if(chunk > count-copied)
795 chunk = count-copied;
797 if(chunk) {
798 memcpy_s(ptr+copied, size, *this->prpos, chunk);
799 *this->prpos += chunk;
800 *this->prsize -= chunk;
801 copied += chunk;
802 size -= chunk;
803 }else if((ptr[copied] = call_basic_streambuf_char_uflow(this)) != EOF) {
804 copied++;
805 size--;
806 }else {
807 break;
811 return copied;
814 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
815 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
816 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Sgetn_s, 16)
817 streamsize __thiscall basic_streambuf_char__Sgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count)
819 TRACE("(%p %p %lu %ld)\n", this, ptr, size, count);
820 return call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count);
823 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
824 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
825 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Unlock, 4)
826 void __thiscall basic_streambuf_char__Unlock(basic_streambuf_char *this)
828 TRACE("(%p)\n", this);
829 mutex_unlock(&this->lock);
832 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
833 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
834 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_eback, 4)
835 char* __thiscall basic_streambuf_char_eback(const basic_streambuf_char *this)
837 TRACE("(%p)\n", this);
838 return *this->prbuf;
841 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
842 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
843 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gptr, 4)
844 char* __thiscall basic_streambuf_char_gptr(const basic_streambuf_char *this)
846 TRACE("(%p)\n", this);
847 return *this->prpos;
850 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
851 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
852 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_egptr, 4)
853 char* __thiscall basic_streambuf_char_egptr(const basic_streambuf_char *this)
855 TRACE("(%p)\n", this);
856 return *this->prpos+*this->prsize;
859 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
860 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
861 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_epptr, 4)
862 char* __thiscall basic_streambuf_char_epptr(const basic_streambuf_char *this)
864 TRACE("(%p)\n", this);
865 return *this->pwpos+*this->pwsize;
868 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
869 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
870 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gbump, 8)
871 void __thiscall basic_streambuf_char_gbump(basic_streambuf_char *this, int off)
873 TRACE("(%p %d)\n", this, off);
874 *this->prpos += off;
875 *this->prsize -= off;
878 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ */
879 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ */
880 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_getloc, 8)
881 locale* __thiscall basic_streambuf_char_getloc(const basic_streambuf_char *this, locale *ret)
883 TRACE("(%p)\n", this);
884 return locale_copy_ctor(ret, this->loc);
887 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
888 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
889 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_imbue, 8)
890 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 52, \
891 void, (basic_streambuf_char*, const locale*), (this, loc))
892 void __thiscall basic_streambuf_char_imbue(basic_streambuf_char *this, const locale *loc)
894 TRACE("(%p %p)\n", this, loc);
897 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
898 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
899 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_overflow, 8)
900 #define call_basic_streambuf_char_overflow(this, ch) CALL_VTBL_FUNC(this, 4, \
901 int, (basic_streambuf_char*, int), (this, ch))
902 int __thiscall basic_streambuf_char_overflow(basic_streambuf_char *this, int ch)
904 TRACE("(%p %d)\n", this, ch);
905 return EOF;
908 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
909 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
910 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbackfail, 8)
911 #define call_basic_streambuf_char_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, \
912 int, (basic_streambuf_char*, int), (this, ch))
913 int __thiscall basic_streambuf_char_pbackfail(basic_streambuf_char *this, int ch)
915 TRACE("(%p %d)\n", this, ch);
916 return EOF;
919 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
920 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
921 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbase, 4)
922 char* __thiscall basic_streambuf_char_pbase(const basic_streambuf_char *this)
924 TRACE("(%p)\n", this);
925 return *this->pwbuf;
928 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
929 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
930 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbump, 8)
931 void __thiscall basic_streambuf_char_pbump(basic_streambuf_char *this, int off)
933 TRACE("(%p %d)\n", this, off);
934 *this->pwpos += off;
935 *this->pwsize -= off;
938 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
939 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
940 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pptr, 4)
941 char* __thiscall basic_streambuf_char_pptr(const basic_streambuf_char *this)
943 TRACE("(%p)\n", this);
944 return *this->pwpos;
947 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
948 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
949 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubimbue, 12)
950 locale* __thiscall basic_streambuf_char_pubimbue(basic_streambuf_char *this, locale *ret, const locale *loc)
952 TRACE("(%p %p)\n", this, loc);
953 memcpy(ret, this->loc, sizeof(locale));
954 call_basic_streambuf_char_imbue(this, loc);
955 locale_copy_ctor(this->loc, loc);
956 return ret;
959 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
960 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
961 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 20)
962 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 36, \
963 fpos_int*, (basic_streambuf_char*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
964 fpos_int* __thiscall basic_streambuf_char_seekoff(basic_streambuf_char *this,
965 fpos_int *ret, streamoff off, int way, int mode)
967 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
968 ret->off = 0;
969 ret->pos = -1;
970 ret->state = 0;
971 return ret;
974 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
975 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
976 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 20)
977 fpos_int* __thiscall basic_streambuf_char_pubseekoff(basic_streambuf_char *this,
978 fpos_int *ret, streamoff off, int way, int mode)
980 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
981 return call_basic_streambuf_char_seekoff(this, ret, off, way, mode);
984 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
985 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
986 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 20)
987 fpos_int* __thiscall basic_streambuf_char_pubseekoff_old(basic_streambuf_char *this,
988 fpos_int *ret, streamoff off, unsigned int way, unsigned int mode)
990 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
991 return basic_streambuf_char_pubseekoff(this, ret, off, way, mode);
994 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
995 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
996 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekpos, 36)
997 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 40, \
998 fpos_int*, (basic_streambuf_char*, fpos_int*, fpos_int, int), (this, ret, pos, mode))
999 fpos_int* __thiscall basic_streambuf_char_seekpos(basic_streambuf_char *this,
1000 fpos_int *ret, fpos_int pos, int mode)
1002 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1003 ret->off = 0;
1004 ret->pos = -1;
1005 ret->state = 0;
1006 return ret;
1009 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1010 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1011 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos, 36)
1012 fpos_int* __thiscall basic_streambuf_char_pubseekpos(basic_streambuf_char *this,
1013 fpos_int *ret, fpos_int pos, int mode)
1015 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1016 return call_basic_streambuf_char_seekpos(this, ret, pos, mode);
1019 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
1020 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
1021 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos_old, 36)
1022 fpos_int* __thiscall basic_streambuf_char_pubseekpos_old(basic_streambuf_char *this,
1023 fpos_int *ret, fpos_int pos, unsigned int mode)
1025 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1026 return basic_streambuf_char_pubseekpos(this, ret, pos, mode);
1029 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PADH@Z */
1030 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z */
1031 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 12)
1032 #define call_basic_streambuf_char_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 44, \
1033 basic_streambuf_char*, (basic_streambuf_char*, char*, streamsize), (this, buf, count))
1034 basic_streambuf_char* __thiscall basic_streambuf_char_setbuf(basic_streambuf_char *this, char *buf, streamsize count)
1036 TRACE("(%p %p %ld)\n", this, buf, count);
1037 return this;
1040 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PADH@Z */
1041 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEAD_J@Z */
1042 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 12)
1043 basic_streambuf_char* __thiscall basic_streambuf_char_pubsetbuf(basic_streambuf_char *this, char *buf, streamsize count)
1045 TRACE("(%p %p %ld)\n", this, buf, count);
1046 return call_basic_streambuf_char_setbuf(this, buf, count);
1049 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1050 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1051 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sync, 4)
1052 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 48, \
1053 int, (basic_streambuf_char*), (this))
1054 int __thiscall basic_streambuf_char_sync(basic_streambuf_char *this)
1056 TRACE("(%p)\n", this);
1057 return 0;
1060 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1061 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1062 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsync, 4)
1063 int __thiscall basic_streambuf_char_pubsync(basic_streambuf_char *this)
1065 TRACE("(%p)\n", this);
1066 return call_basic_streambuf_char_sync(this);
1069 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
1070 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
1071 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 12)
1072 streamsize __thiscall basic_streambuf_char_sgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1074 TRACE("(%p %p %ld)\n", this, ptr, count);
1075 return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1078 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1079 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ */
1080 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_showmanyc, 4)
1081 #define call_basic_streambuf_char_showmanyc(this) CALL_VTBL_FUNC(this, 12, \
1082 streamsize, (basic_streambuf_char*), (this))
1083 streamsize __thiscall basic_streambuf_char_showmanyc(basic_streambuf_char *this)
1085 TRACE("(%p)\n", this);
1086 return 0;
1089 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1090 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JXZ */
1091 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_in_avail, 4)
1092 streamsize __thiscall basic_streambuf_char_in_avail(basic_streambuf_char *this)
1094 streamsize ret;
1096 TRACE("(%p)\n", this);
1098 ret = basic_streambuf_char__Gnavail(this);
1099 return ret ? ret : call_basic_streambuf_char_showmanyc(this);
1102 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1103 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1104 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputbackc, 8)
1105 int __thiscall basic_streambuf_char_sputbackc(basic_streambuf_char *this, char ch)
1107 TRACE("(%p %d)\n", this, ch);
1108 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
1109 (*this->prsize)++;
1110 (*this->prpos)--;
1111 return ch;
1114 return call_basic_streambuf_char_pbackfail(this, ch);
1117 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1118 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1119 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputc, 8)
1120 int __thiscall basic_streambuf_char_sputc(basic_streambuf_char *this, char ch)
1122 TRACE("(%p %d)\n", this, ch);
1123 return basic_streambuf_char__Pnavail(this) ?
1124 (*basic_streambuf_char__Pninc(this) = ch) :
1125 call_basic_streambuf_char_overflow(this, ch);
1128 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1129 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1130 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sungetc, 4)
1131 int __thiscall basic_streambuf_char_sungetc(basic_streambuf_char *this)
1133 TRACE("(%p)\n", this);
1134 if(*this->prpos && *this->prpos>*this->prbuf) {
1135 (*this->prsize)++;
1136 (*this->prpos)--;
1137 return **this->prpos;
1140 return call_basic_streambuf_char_pbackfail(this, EOF);
1143 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1144 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1145 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_stossc, 4)
1146 void __thiscall basic_streambuf_char_stossc(basic_streambuf_char *this)
1148 TRACE("(%p)\n", this);
1149 if(basic_streambuf_char__Gnavail(this))
1150 basic_streambuf_char__Gninc(this);
1151 else
1152 call_basic_streambuf_char_uflow(this);
1155 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1156 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1157 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sbumpc, 4)
1158 int __thiscall basic_streambuf_char_sbumpc(basic_streambuf_char *this)
1160 TRACE("(%p)\n", this);
1161 return basic_streambuf_char__Gnavail(this) ?
1162 *basic_streambuf_char__Gninc(this) : call_basic_streambuf_char_uflow(this);
1165 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1166 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1167 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetc, 4)
1168 int __thiscall basic_streambuf_char_sgetc(basic_streambuf_char *this)
1170 TRACE("(%p)\n", this);
1171 return basic_streambuf_char__Gnavail(this) ?
1172 *basic_streambuf_char_gptr(this) : call_basic_streambuf_char_underflow(this);
1175 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1176 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1177 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_snextc, 4)
1178 int __thiscall basic_streambuf_char_snextc(basic_streambuf_char *this)
1180 TRACE("(%p)\n", this);
1182 if(basic_streambuf_char__Gnavail(this) > 1)
1183 return *basic_streambuf_char__Gnpreinc(this);
1184 return basic_streambuf_char_sbumpc(this)==EOF ?
1185 EOF : basic_streambuf_char_sgetc(this);
1188 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADH@Z */
1189 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z */
1190 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 12)
1191 #define call_basic_streambuf_char_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, \
1192 streamsize, (basic_streambuf_char*, char*, streamsize), (this, ptr, count))
1193 streamsize __thiscall basic_streambuf_char_xsgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1195 TRACE("(%p %p %ld)\n", this, ptr, count);
1196 return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1199 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPBDH@Z */
1200 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z */
1201 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 12)
1202 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 32, \
1203 streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1204 streamsize __thiscall basic_streambuf_char_xsputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1206 streamsize copied, chunk;
1208 TRACE("(%p %p %ld)\n", this, ptr, count);
1210 for(copied=0; copied<count;) {
1211 chunk = basic_streambuf_char__Pnavail(this);
1212 if(chunk > count-copied)
1213 chunk = count-copied;
1215 if(chunk) {
1216 memcpy(*this->pwpos, ptr+copied, chunk);
1217 *this->pwpos += chunk;
1218 *this->pwsize -= chunk;
1219 copied += chunk;
1220 }else if(call_basic_streambuf_char_overflow(this, ptr[copied]) != EOF) {
1221 copied++;
1222 }else {
1223 break;
1227 return copied;
1230 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z */
1231 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z */
1232 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 12)
1233 streamsize __thiscall basic_streambuf_char_sputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1235 TRACE("(%p %p %ld)\n", this, ptr, count);
1236 return call_basic_streambuf_char_xsputn(this, ptr, count);
1239 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
1240 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
1241 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
1242 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
1243 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp_next, 16)
1244 void __thiscall basic_streambuf_wchar_setp_next(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
1246 TRACE("(%p %p %p %p)\n", this, first, next, last);
1248 this->wbuf = first;
1249 this->wpos = next;
1250 this->wsize = last-next;
1253 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W0@Z */
1254 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W0@Z */
1255 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG0@Z */
1256 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG0@Z */
1257 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp, 12)
1258 void __thiscall basic_streambuf_wchar_setp(basic_streambuf_wchar *this, wchar_t *first, wchar_t *last)
1260 basic_streambuf_wchar_setp_next(this, first, first, last);
1263 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
1264 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
1265 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
1266 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
1267 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setg, 16)
1268 void __thiscall basic_streambuf_wchar_setg(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
1270 TRACE("(%p %p %p %p)\n", this, first, next, last);
1272 this->rbuf = first;
1273 this->rpos = next;
1274 this->rsize = last-next;
1277 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXXZ */
1278 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXXZ */
1279 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXXZ */
1280 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */
1281 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init_empty, 4)
1282 void __thiscall basic_streambuf_wchar__Init_empty(basic_streambuf_wchar *this)
1284 TRACE("(%p)\n", this);
1286 this->prbuf = &this->rbuf;
1287 this->pwbuf = &this->wbuf;
1288 this->prpos = &this->rpos;
1289 this->pwpos = &this->wpos;
1290 this->prsize = &this->rsize;
1291 this->pwsize = &this->wsize;
1293 basic_streambuf_wchar_setp(this, NULL, NULL);
1294 basic_streambuf_wchar_setg(this, NULL, NULL, NULL);
1297 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1298 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1299 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor_uninitialized, 8)
1300 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
1302 TRACE("(%p %d)\n", this, uninitialized);
1303 this->vtable = &MSVCP_basic_streambuf_wchar_vtable;
1304 mutex_ctor(&this->lock);
1305 return this;
1308 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1309 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1310 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor_uninitialized, 8)
1311 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
1313 TRACE("(%p %d)\n", this, uninitialized);
1314 basic_streambuf_wchar_ctor_uninitialized(this, uninitialized);
1315 this->vtable = &MSVCP_basic_streambuf_short_vtable;
1316 return this;
1319 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
1320 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
1321 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor, 4)
1322 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor(basic_streambuf_wchar *this)
1324 TRACE("(%p)\n", this);
1326 this->vtable = &MSVCP_basic_streambuf_wchar_vtable;
1327 mutex_ctor(&this->lock);
1328 this->loc = MSVCRT_operator_new(sizeof(locale));
1329 locale_ctor(this->loc);
1330 basic_streambuf_wchar__Init_empty(this);
1332 return this;
1335 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@XZ */
1336 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@XZ */
1337 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor, 4)
1338 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor(basic_streambuf_wchar *this)
1340 TRACE("(%p)\n", this);
1341 basic_streambuf_wchar_ctor(this);
1342 this->vtable = &MSVCP_basic_streambuf_short_vtable;
1343 return this;
1346 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
1347 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
1348 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
1349 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
1350 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_dtor, 4)
1351 void __thiscall basic_streambuf_wchar_dtor(basic_streambuf_wchar *this)
1353 TRACE("(%p)\n", this);
1355 mutex_dtor(&this->lock);
1356 locale_dtor(this->loc);
1357 MSVCRT_operator_delete(this->loc);
1360 DEFINE_THISCALL_WRAPPER(MSVCP_basic_streambuf_wchar_vector_dtor, 8)
1361 basic_streambuf_wchar* __thiscall MSVCP_basic_streambuf_wchar_vector_dtor(basic_streambuf_wchar *this, unsigned int flags)
1363 TRACE("(%p %x)\n", this, flags);
1364 if(flags & 2) {
1365 /* we have an array, with the number of elements stored before the first object */
1366 int i, *ptr = (int *)this-1;
1368 for(i=*ptr-1; i>=0; i--)
1369 basic_streambuf_wchar_dtor(this+i);
1370 MSVCRT_operator_delete(ptr);
1371 } else {
1372 basic_streambuf_wchar_dtor(this);
1373 if(flags & 1)
1374 MSVCRT_operator_delete(this);
1377 return this;
1380 DEFINE_THISCALL_WRAPPER(MSVCP_basic_streambuf_short_vector_dtor, 8)
1381 basic_streambuf_wchar* __thiscall MSVCP_basic_streambuf_short_vector_dtor(basic_streambuf_wchar *this, unsigned int flags)
1383 TRACE("(%p %x)\n", this, flags);
1384 return MSVCP_basic_streambuf_wchar_vector_dtor(this, flags);
1387 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
1388 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
1389 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
1390 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
1391 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gnavail, 4)
1392 streamsize __thiscall basic_streambuf_wchar__Gnavail(const basic_streambuf_wchar *this)
1394 TRACE("(%p)\n", this);
1395 return *this->prpos ? *this->prsize : 0;
1398 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1399 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1400 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1401 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1402 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gndec, 4)
1403 wchar_t* __thiscall basic_streambuf_wchar__Gndec(basic_streambuf_wchar *this)
1405 TRACE("(%p)\n", this);
1406 (*this->prsize)++;
1407 (*this->prpos)--;
1408 return *this->prpos;
1411 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1412 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1413 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1414 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1415 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gninc, 4)
1416 wchar_t* __thiscall basic_streambuf_wchar__Gninc(basic_streambuf_wchar *this)
1418 TRACE("(%p)\n", this);
1419 (*this->prsize)--;
1420 return (*this->prpos)++;
1423 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1424 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1425 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1426 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1427 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gnpreinc, 4)
1428 wchar_t* __thiscall basic_streambuf_wchar__Gnpreinc(basic_streambuf_wchar *this)
1430 TRACE("(%p)\n", this);
1431 (*this->prsize)--;
1432 (*this->prpos)++;
1433 return *this->prpos;
1436 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPAPA_W0PAH001@Z */
1437 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAPEA_W0PEAH001@Z */
1438 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAPAG0PAH001@Z */
1439 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAPEAG0PEAH001@Z */
1440 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init, 28)
1441 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)
1443 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
1445 this->prbuf = gf;
1446 this->pwbuf = pf;
1447 this->prpos = gn;
1448 this->pwpos = pn;
1449 this->prsize = gc;
1450 this->pwsize = pc;
1453 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
1454 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
1455 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
1456 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
1457 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Lock, 4)
1458 void __thiscall basic_streambuf_wchar__Lock(basic_streambuf_wchar *this)
1460 TRACE("(%p)\n", this);
1461 mutex_lock(&this->lock);
1464 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
1465 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
1466 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
1467 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
1468 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pnavail, 4)
1469 streamsize __thiscall basic_streambuf_wchar__Pnavail(const basic_streambuf_wchar *this)
1471 TRACE("(%p)\n", this);
1472 return *this->pwpos ? *this->pwsize : 0;
1475 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1476 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1477 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1478 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1479 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pninc, 4)
1480 wchar_t* __thiscall basic_streambuf_wchar__Pninc(basic_streambuf_wchar *this)
1482 TRACE("(%p)\n", this);
1483 (*this->pwsize)--;
1484 return (*this->pwpos)++;
1487 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
1488 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
1489 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
1490 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
1491 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_underflow, 4)
1492 #define call_basic_streambuf_wchar_underflow(this) CALL_VTBL_FUNC(this, 16, \
1493 unsigned short, (basic_streambuf_wchar*), (this))
1494 unsigned short __thiscall basic_streambuf_wchar_underflow(basic_streambuf_wchar *this)
1496 TRACE("(%p)\n", this);
1497 return WEOF;
1500 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
1501 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
1502 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
1503 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
1504 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_uflow, 4)
1505 #define call_basic_streambuf_wchar_uflow(this) CALL_VTBL_FUNC(this, 20, \
1506 unsigned short, (basic_streambuf_wchar*), (this))
1507 unsigned short __thiscall basic_streambuf_wchar_uflow(basic_streambuf_wchar *this)
1509 int ret;
1511 TRACE("(%p)\n", this);
1513 if(call_basic_streambuf_wchar_underflow(this)==WEOF)
1514 return WEOF;
1516 ret = **this->prpos;
1517 (*this->prsize)--;
1518 (*this->prpos)++;
1519 return ret;
1522 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WIH@Z */
1523 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_K_J@Z */
1524 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGIH@Z */
1525 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_K_J@Z */
1526 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Xsgetn_s, 16)
1527 #define call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count) CALL_VTBL_FUNC(this, 28, \
1528 streamsize, (basic_streambuf_wchar*, wchar_t*, MSVCP_size_t, streamsize), (this, ptr, size, count))
1529 streamsize __thiscall basic_streambuf_wchar__Xsgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, MSVCP_size_t size, streamsize count)
1531 streamsize copied, chunk;
1533 TRACE("(%p %p %lu %ld)\n", this, ptr, size, count);
1535 for(copied=0; copied<count && size;) {
1536 chunk = basic_streambuf_wchar__Gnavail(this);
1537 if(chunk > count-copied)
1538 chunk = count-copied;
1540 if(chunk) {
1541 memcpy_s(ptr+copied, size, *this->prpos, chunk);
1542 *this->prpos += chunk;
1543 *this->prsize -= chunk;
1544 copied += chunk;
1545 size -= chunk;
1546 }else if((ptr[copied] = call_basic_streambuf_wchar_uflow(this)) != WEOF) {
1547 copied++;
1548 size--;
1549 }else {
1550 break;
1554 return copied;
1557 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
1558 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
1559 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
1560 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
1561 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Sgetn_s, 16)
1562 streamsize __thiscall basic_streambuf_wchar__Sgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, MSVCP_size_t size, streamsize count)
1564 TRACE("(%p %p %lu %ld)\n", this, ptr, size, count);
1565 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count);
1568 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
1569 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
1570 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
1571 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
1572 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Unlock, 4)
1573 void __thiscall basic_streambuf_wchar__Unlock(basic_streambuf_wchar *this)
1575 TRACE("(%p)\n", this);
1576 mutex_unlock(&this->lock);
1579 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1580 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1581 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1582 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1583 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_eback, 4)
1584 wchar_t* __thiscall basic_streambuf_wchar_eback(const basic_streambuf_wchar *this)
1586 TRACE("(%p)\n", this);
1587 return *this->prbuf;
1590 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1591 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1592 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1593 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1594 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gptr, 4)
1595 wchar_t* __thiscall basic_streambuf_wchar_gptr(const basic_streambuf_wchar *this)
1597 TRACE("(%p)\n", this);
1598 return *this->prpos;
1601 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1602 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1603 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1604 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1605 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_egptr, 4)
1606 wchar_t* __thiscall basic_streambuf_wchar_egptr(const basic_streambuf_wchar *this)
1608 TRACE("(%p)\n", this);
1609 return *this->prpos+*this->prsize;
1612 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1613 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1614 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1615 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1616 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_epptr, 4)
1617 wchar_t* __thiscall basic_streambuf_wchar_epptr(const basic_streambuf_wchar *this)
1619 TRACE("(%p)\n", this);
1620 return *this->pwpos+*this->pwsize;
1623 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
1624 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
1625 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
1626 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
1627 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gbump, 8)
1628 void __thiscall basic_streambuf_wchar_gbump(basic_streambuf_wchar *this, int off)
1630 TRACE("(%p %d)\n", this, off);
1631 *this->prpos += off;
1632 *this->prsize -= off;
1635 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QBE?AVlocale@2@XZ */
1636 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEBA?AVlocale@2@XZ */
1637 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QBE?AVlocale@2@XZ */
1638 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEBA?AVlocale@2@XZ */
1639 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_getloc, 8)
1640 locale* __thiscall basic_streambuf_wchar_getloc(const basic_streambuf_wchar *this, locale *ret)
1642 TRACE("(%p)\n", this);
1643 return locale_copy_ctor(ret, this->loc);
1646 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
1647 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
1648 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
1649 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
1650 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_imbue, 8)
1651 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 52, \
1652 void, (basic_streambuf_wchar*, const locale*), (this, loc))
1653 void __thiscall basic_streambuf_wchar_imbue(basic_streambuf_wchar *this, const locale *loc)
1655 TRACE("(%p %p)\n", this, loc);
1658 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
1659 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
1660 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
1661 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
1662 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_overflow, 8)
1663 #define call_basic_streambuf_wchar_overflow(this, ch) CALL_VTBL_FUNC(this, 4, \
1664 unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
1665 unsigned short __thiscall basic_streambuf_wchar_overflow(basic_streambuf_wchar *this, unsigned short ch)
1667 TRACE("(%p %d)\n", this, ch);
1668 return WEOF;
1671 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
1672 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
1673 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
1674 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
1675 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbackfail, 8)
1676 #define call_basic_streambuf_wchar_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, \
1677 unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
1678 unsigned short __thiscall basic_streambuf_wchar_pbackfail(basic_streambuf_wchar *this, unsigned short ch)
1680 TRACE("(%p %d)\n", this, ch);
1681 return WEOF;
1684 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1685 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1686 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1687 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1688 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbase, 4)
1689 wchar_t* __thiscall basic_streambuf_wchar_pbase(const basic_streambuf_wchar *this)
1691 TRACE("(%p)\n", this);
1692 return *this->pwbuf;
1695 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
1696 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
1697 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
1698 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
1699 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbump, 8)
1700 void __thiscall basic_streambuf_wchar_pbump(basic_streambuf_wchar *this, int off)
1702 TRACE("(%p %d)\n", this, off);
1703 *this->pwpos += off;
1704 *this->pwsize -= off;
1707 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1708 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1709 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1710 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1711 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pptr, 4)
1712 wchar_t* __thiscall basic_streambuf_wchar_pptr(const basic_streambuf_wchar *this)
1714 TRACE("(%p)\n", this);
1715 return *this->pwpos;
1718 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1719 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1720 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1721 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1722 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubimbue, 12)
1723 locale* __thiscall basic_streambuf_wchar_pubimbue(basic_streambuf_wchar *this, locale *ret, const locale *loc)
1725 TRACE("(%p %p)\n", this, loc);
1726 memcpy(ret, this->loc, sizeof(locale));
1727 call_basic_streambuf_wchar_imbue(this, loc);
1728 locale_copy_ctor(this->loc, loc);
1729 return ret;
1732 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1733 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1734 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1735 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1736 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekoff, 20)
1737 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 36, \
1738 fpos_int*, (basic_streambuf_wchar*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
1739 fpos_int* __thiscall basic_streambuf_wchar_seekoff(basic_streambuf_wchar *this,
1740 fpos_int *ret, streamoff off, int way, int mode)
1742 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
1743 ret->off = 0;
1744 ret->pos = -1;
1745 ret->state = 0;
1746 return ret;
1749 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1750 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1751 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1752 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1753 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff, 20)
1754 fpos_int* __thiscall basic_streambuf_wchar_pubseekoff(basic_streambuf_wchar *this,
1755 fpos_int *ret, streamoff off, int way, int mode)
1757 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
1758 return call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode);
1761 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
1762 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
1763 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
1764 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
1765 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff_old, 20)
1766 fpos_int* __thiscall basic_streambuf_wchar_pubseekoff_old(basic_streambuf_wchar *this,
1767 fpos_int *ret, streamoff off, unsigned int way, unsigned int mode)
1769 TRACE("(%p %ld %d %d)\n", this, off, way, mode);
1770 return basic_streambuf_wchar_pubseekoff(this, ret, off, way, mode);
1773 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1774 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1775 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1776 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1777 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekpos, 36)
1778 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 40, \
1779 fpos_int*, (basic_streambuf_wchar*, fpos_int*, fpos_int, int), (this, ret, pos, mode))
1780 fpos_int* __thiscall basic_streambuf_wchar_seekpos(basic_streambuf_wchar *this,
1781 fpos_int *ret, fpos_int pos, int mode)
1783 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1784 ret->off = 0;
1785 ret->pos = -1;
1786 ret->state = 0;
1787 return ret;
1790 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1791 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1792 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1793 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1794 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos, 36)
1795 fpos_int* __thiscall basic_streambuf_wchar_pubseekpos(basic_streambuf_wchar *this,
1796 fpos_int *ret, fpos_int pos, int mode)
1798 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1799 return call_basic_streambuf_wchar_seekpos(this, ret, pos, mode);
1802 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
1803 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
1804 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
1805 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
1806 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos_old, 36)
1807 fpos_int* __thiscall basic_streambuf_wchar_pubseekpos_old(basic_streambuf_wchar *this,
1808 fpos_int *ret, fpos_int pos, unsigned int mode)
1810 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1811 return basic_streambuf_wchar_pubseekpos(this, ret, pos, mode);
1814 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEPAV12@PA_WH@Z */
1815 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV12@PEA_W_J@Z */
1816 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEPAV12@PAGH@Z */
1817 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAPEAV12@PEAG_J@Z */
1818 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setbuf, 12)
1819 #define call_basic_streambuf_wchar_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 44, \
1820 basic_streambuf_wchar*, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, buf, count))
1821 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_setbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
1823 TRACE("(%p %p %ld)\n", this, buf, count);
1824 return this;
1827 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PA_WH@Z */
1828 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEA_W_J@Z */
1829 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PAGH@Z */
1830 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEAG_J@Z */
1831 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsetbuf, 12)
1832 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_pubsetbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
1834 TRACE("(%p %p %ld)\n", this, buf, count);
1835 return call_basic_streambuf_wchar_setbuf(this, buf, count);
1838 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
1839 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
1840 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
1841 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
1842 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sync, 4)
1843 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 48, \
1844 int, (basic_streambuf_wchar*), (this))
1845 int __thiscall basic_streambuf_wchar_sync(basic_streambuf_wchar *this)
1847 TRACE("(%p)\n", this);
1848 return 0;
1851 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
1852 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
1853 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
1854 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHXZ */
1855 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsync, 4)
1856 int __thiscall basic_streambuf_wchar_pubsync(basic_streambuf_wchar *this)
1858 TRACE("(%p)\n", this);
1859 return call_basic_streambuf_wchar_sync(this);
1862 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
1863 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
1864 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
1865 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
1866 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetn, 12)
1867 streamsize __thiscall basic_streambuf_wchar_sgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
1869 TRACE("(%p %p %ld)\n", this, ptr, count);
1870 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, -1, count);
1873 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
1874 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JXZ */
1875 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
1876 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JXZ */
1877 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_showmanyc, 4)
1878 #define call_basic_streambuf_wchar_showmanyc(this) CALL_VTBL_FUNC(this, 12, \
1879 streamsize, (basic_streambuf_wchar*), (this))
1880 streamsize __thiscall basic_streambuf_wchar_showmanyc(basic_streambuf_wchar *this)
1882 TRACE("(%p)\n", this);
1883 return 0;
1886 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
1887 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JXZ */
1888 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
1889 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JXZ */
1890 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_in_avail, 4)
1891 streamsize __thiscall basic_streambuf_wchar_in_avail(basic_streambuf_wchar *this)
1893 streamsize ret;
1895 TRACE("(%p)\n", this);
1897 ret = basic_streambuf_wchar__Gnavail(this);
1898 return ret ? ret : call_basic_streambuf_wchar_showmanyc(this);
1901 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
1902 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
1903 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
1904 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
1905 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputbackc, 8)
1906 unsigned short __thiscall basic_streambuf_wchar_sputbackc(basic_streambuf_wchar *this, wchar_t ch)
1908 TRACE("(%p %d)\n", this, ch);
1909 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
1910 (*this->prsize)++;
1911 (*this->prpos)--;
1912 return ch;
1915 return call_basic_streambuf_wchar_pbackfail(this, ch);
1918 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
1919 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
1920 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
1921 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHG@Z */
1922 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputc, 8)
1923 unsigned short __thiscall basic_streambuf_wchar_sputc(basic_streambuf_wchar *this, wchar_t ch)
1925 TRACE("(%p %d)\n", this, ch);
1926 return basic_streambuf_wchar__Pnavail(this) ?
1927 (*basic_streambuf_wchar__Pninc(this) = ch) :
1928 call_basic_streambuf_wchar_overflow(this, ch);
1931 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
1932 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
1933 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
1934 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
1935 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sungetc, 4)
1936 unsigned short __thiscall basic_streambuf_wchar_sungetc(basic_streambuf_wchar *this)
1938 TRACE("(%p)\n", this);
1939 if(*this->prpos && *this->prpos>*this->prbuf) {
1940 (*this->prsize)++;
1941 (*this->prpos)--;
1942 return **this->prpos;
1945 return call_basic_streambuf_wchar_pbackfail(this, WEOF);
1948 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
1949 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
1950 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
1951 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
1952 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_stossc, 4)
1953 void __thiscall basic_streambuf_wchar_stossc(basic_streambuf_wchar *this)
1955 TRACE("(%p)\n", this);
1956 if(basic_streambuf_wchar__Gnavail(this))
1957 basic_streambuf_wchar__Gninc(this);
1958 else
1959 call_basic_streambuf_wchar_uflow(this);
1962 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
1963 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
1964 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
1965 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
1966 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sbumpc, 4)
1967 unsigned short __thiscall basic_streambuf_wchar_sbumpc(basic_streambuf_wchar *this)
1969 TRACE("(%p)\n", this);
1970 return basic_streambuf_wchar__Gnavail(this) ?
1971 *basic_streambuf_wchar__Gninc(this) : call_basic_streambuf_wchar_uflow(this);
1974 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
1975 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
1976 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
1977 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
1978 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetc, 4)
1979 unsigned short __thiscall basic_streambuf_wchar_sgetc(basic_streambuf_wchar *this)
1981 TRACE("(%p)\n", this);
1982 return basic_streambuf_wchar__Gnavail(this) ?
1983 *basic_streambuf_wchar_gptr(this) : call_basic_streambuf_wchar_underflow(this);
1986 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
1987 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
1988 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
1989 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
1990 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_snextc, 4)
1991 unsigned short __thiscall basic_streambuf_wchar_snextc(basic_streambuf_wchar *this)
1993 TRACE("(%p)\n", this);
1995 if(basic_streambuf_wchar__Gnavail(this) > 1)
1996 return *basic_streambuf_wchar__Gnpreinc(this);
1997 return basic_streambuf_wchar_sbumpc(this)==WEOF ?
1998 WEOF : basic_streambuf_wchar_sgetc(this);
2001 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WH@Z */
2002 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_J@Z */
2003 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGH@Z */
2004 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_J@Z */
2005 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsgetn, 12)
2006 #define call_basic_streambuf_wchar_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, \
2007 streamsize, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, ptr, count))
2008 streamsize __thiscall basic_streambuf_wchar_xsgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2010 TRACE("(%p %p %ld)\n", this, ptr, count);
2011 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, -1, count);
2014 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPB_WH@Z */
2015 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEB_W_J@Z */
2016 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPBGH@Z */
2017 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEBG_J@Z */
2018 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsputn, 12)
2019 #define call_basic_streambuf_wchar_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 32, \
2020 streamsize, (basic_streambuf_wchar*, const wchar_t*, streamsize), (this, ptr, count))
2021 streamsize __thiscall basic_streambuf_wchar_xsputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2023 streamsize copied, chunk;
2025 TRACE("(%p %p %ld)\n", this, ptr, count);
2027 for(copied=0; copied<count;) {
2028 chunk = basic_streambuf_wchar__Pnavail(this);
2029 if(chunk > count-copied)
2030 chunk = count-copied;
2032 if(chunk) {
2033 memcpy(*this->pwpos, ptr+copied, chunk);
2034 *this->pwpos += chunk;
2035 *this->pwsize -= chunk;
2036 copied += chunk;
2037 }else if(call_basic_streambuf_wchar_overflow(this, ptr[copied]) != WEOF) {
2038 copied++;
2039 }else {
2040 break;
2044 return copied;
2047 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPB_WH@Z */
2048 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEB_W_J@Z */
2049 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPBGH@Z */
2050 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEBG_J@Z */
2051 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputn, 12)
2052 streamsize __thiscall basic_streambuf_wchar_sputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2054 TRACE("(%p %p %ld)\n", this, ptr, count);
2055 return call_basic_streambuf_wchar_xsputn(this, ptr, count);
2058 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
2059 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
2060 int basic_filebuf_char__Init__Stinit = 0;
2062 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
2063 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
2064 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Init, 12)
2065 void __thiscall basic_filebuf_char__Init(basic_filebuf_char *this, FILE *file, basic_filebuf__Initfl which)
2067 TRACE("(%p %p %d)\n", this, file, which);
2069 this->cvt = NULL;
2070 this->wrotesome = FALSE;
2071 this->state = basic_filebuf_char__Init__Stinit;
2072 this->close = (which == INITFL_open);
2073 this->file = file;
2075 basic_streambuf_char__Init_empty(&this->base);
2076 if(file)
2077 basic_streambuf_char__Init(&this->base, &file->_base, &file->_ptr,
2078 &file->_cnt, &file->_base, &file->_ptr, &file->_cnt);
2081 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z */
2082 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z */
2083 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt, 8)
2084 void __thiscall basic_filebuf_char__Initcvt(basic_filebuf_char *this, codecvt_char *cvt)
2086 TRACE("(%p %p)\n", this, cvt);
2088 if(codecvt_base_always_noconv(&cvt->base)) {
2089 this->cvt = NULL;
2090 }else {
2091 basic_streambuf_char__Init_empty(&this->base);
2092 this->cvt = cvt;
2096 /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAE_NXZ */
2097 /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAA_NXZ */
2098 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Endwrite, 4)
2099 MSVCP_bool __thiscall basic_filebuf_char__Endwrite(basic_filebuf_char *this)
2101 TRACE("(%p)\n", this);
2103 if(!this->wrotesome || !this->cvt)
2104 return TRUE;
2107 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
2108 return FALSE;
2110 while(1) {
2111 /* TODO: check if we need a dynamic buffer here */
2112 char buf[128];
2113 char *next;
2114 int ret;
2116 ret = codecvt_char_unshift(this->cvt, &this->state, buf, buf+sizeof(buf), &next);
2117 switch(ret) {
2118 case CODECVT_ok:
2119 this->wrotesome = FALSE;
2120 /* fall through */
2121 case CODECVT_partial:
2122 if(!fwrite(buf, next-buf, 1, this->file))
2123 return FALSE;
2124 if(this->wrotesome)
2125 break;
2126 /* fall through */
2127 case CODECVT_noconv:
2128 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
2129 return FALSE;
2130 return TRUE;
2131 default:
2132 return FALSE;
2137 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@XZ */
2138 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@XZ */
2139 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_close, 4)
2140 basic_filebuf_char* __thiscall basic_filebuf_char_close(basic_filebuf_char *this)
2142 basic_filebuf_char *ret = this;
2144 TRACE("(%p)\n", this);
2146 if(!this->file)
2147 return NULL;
2149 /* TODO: handle exceptions */
2150 if(!basic_filebuf_char__Endwrite(this))
2151 ret = NULL;
2152 if(!fclose(this->file))
2153 ret = NULL;
2155 basic_filebuf_char__Init(this, NULL, INITFL_close);
2156 return ret;
2159 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
2160 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
2161 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_file, 8)
2162 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_file(basic_filebuf_char *this, FILE *file)
2164 TRACE("(%p %p)\n", this, file);
2166 basic_streambuf_char_ctor(&this->base);
2167 this->base.vtable = &MSVCP_basic_filebuf_char_vtable;
2169 basic_filebuf_char__Init(this, file, INITFL_new);
2170 return this;
2173 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
2174 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
2175 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor, 4)
2176 basic_filebuf_char* __thiscall basic_filebuf_char_ctor(basic_filebuf_char *this)
2178 return basic_filebuf_char_ctor_file(this, NULL);
2181 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
2182 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
2183 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_uninitialized, 8)
2184 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_uninitialized(basic_filebuf_char *this, int uninitialized)
2186 TRACE("(%p %d)\n", this, uninitialized);
2188 basic_streambuf_char_ctor(&this->base);
2189 this->base.vtable = &MSVCP_basic_filebuf_char_vtable;
2190 return this;
2193 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
2194 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
2195 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_dtor, 4)
2196 void __thiscall basic_filebuf_char_dtor(basic_filebuf_char *this)
2198 TRACE("(%p)\n", this);
2200 if(this->close)
2201 basic_filebuf_char_close(this);
2202 basic_streambuf_char_dtor(&this->base);
2205 DEFINE_THISCALL_WRAPPER(MSVCP_basic_filebuf_char_vector_dtor, 8)
2206 basic_filebuf_char* __thiscall MSVCP_basic_filebuf_char_vector_dtor(basic_filebuf_char *this, unsigned int flags)
2208 TRACE("(%p %x)\n", this, flags);
2209 if(flags & 2) {
2210 /* we have an array, with the number of elements stored before the first object */
2211 int i, *ptr = (int *)this-1;
2213 for(i=*ptr-1; i>=0; i--)
2214 basic_filebuf_char_dtor(this+i);
2215 MSVCRT_operator_delete(ptr);
2216 } else {
2217 basic_filebuf_char_dtor(this);
2218 if(flags & 1)
2219 MSVCRT_operator_delete(this);
2222 return this;
2225 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QBE_NXZ */
2226 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
2227 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_is_open, 4)
2228 MSVCP_bool __thiscall basic_filebuf_char_is_open(const basic_filebuf_char *this)
2230 TRACE("(%p)\n", this);
2231 return this->file != NULL;
2234 /* ?_Fiopen@std@@YAPAU_iobuf@@PB_WHH@Z */
2235 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEB_WHH@Z */
2236 FILE* __cdecl _Fiopen_wchar(const wchar_t *name, int mode, int prot)
2238 static const wchar_t rW[] = {'r',0};
2239 static const struct {
2240 int mode;
2241 const wchar_t str[4];
2242 const wchar_t str_bin[4];
2243 } str_mode[] = {
2244 {OPENMODE_out, {'w',0}, {'w','b',0}},
2245 {OPENMODE_out|OPENMODE_app, {'a',0}, {'a','b',0}},
2246 {OPENMODE_app, {'a',0}, {'a','b',0}},
2247 {OPENMODE_out|OPENMODE_trunc, {'w',0}, {'w','b',0}},
2248 {OPENMODE_in, {'r',0}, {'r','b',0}},
2249 {OPENMODE_in|OPENMODE_out, {'r','+',0}, {'r','+','b',0}},
2250 {OPENMODE_in|OPENMODE_out|OPENMODE_trunc, {'w','+',0}, {'w','+','b',0}},
2251 {OPENMODE_in|OPENMODE_out|OPENMODE_app, {'a','+',0}, {'a','+','b',0}},
2252 {OPENMODE_in|OPENMODE_app, {'a','+',0}, {'a','+','b',0}}
2255 int real_mode = mode & ~(OPENMODE_ate|OPENMODE__Nocreate|OPENMODE__Noreplace|OPENMODE_binary);
2256 int mode_idx;
2257 FILE *f = NULL;
2259 TRACE("(%s %d %d)\n", debugstr_w(name), mode, prot);
2261 for(mode_idx=0; mode_idx<sizeof(str_mode)/sizeof(str_mode[0]); mode_idx++)
2262 if(str_mode[mode_idx].mode == real_mode)
2263 break;
2264 if(mode_idx == sizeof(str_mode)/sizeof(str_mode[0]))
2265 return NULL;
2267 if((mode & OPENMODE__Nocreate) && !(f = _wfopen(name, rW)))
2268 return NULL;
2269 else if(f)
2270 fclose(f);
2272 if((mode & OPENMODE__Noreplace) && (mode & (OPENMODE_out|OPENMODE_app))
2273 && (f = _wfopen(name, rW))) {
2274 fclose(f);
2275 return NULL;
2278 f = _wfsopen(name, (mode & OPENMODE_binary) ? str_mode[mode_idx].str_bin
2279 : str_mode[mode_idx].str, prot);
2280 if(!f)
2281 return NULL;
2283 if((mode & OPENMODE_ate) && fseek(f, 0, SEEK_END)) {
2284 fclose(f);
2285 return NULL;
2288 return f;
2291 /* ?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z */
2292 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEBDHH@Z */
2293 FILE* __cdecl _Fiopen(const char *name, int mode, int prot)
2295 wchar_t nameW[FILENAME_MAX];
2297 TRACE("(%s %d %d)\n", name, mode, prot);
2299 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
2300 return NULL;
2301 return _Fiopen_wchar(nameW, mode, prot);
2304 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WHH@Z */
2305 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
2306 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGHH@Z */
2307 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGHH@Z */
2308 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar, 16)
2309 basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar(basic_filebuf_char *this, const wchar_t *name, int mode, int prot)
2311 FILE *f = NULL;
2313 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
2315 if(basic_filebuf_char_is_open(this))
2316 return NULL;
2318 if(!(f = _Fiopen_wchar(name, mode, prot)))
2319 return NULL;
2321 basic_filebuf_char__Init(this, f, INITFL_open);
2322 basic_filebuf_char__Initcvt(this, codecvt_char_use_facet(this->base.loc));
2323 return this;
2326 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WI@Z */
2327 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WI@Z */
2328 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGI@Z */
2329 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGI@Z */
2330 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar_mode, 12)
2331 basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar_mode(basic_filebuf_char *this, const wchar_t *name, unsigned int mode)
2333 return basic_filebuf_char_open_wchar(this, name, mode, SH_DENYNO);
2336 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDHH@Z */
2337 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDHH@Z */
2338 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open, 16)
2339 basic_filebuf_char* __thiscall basic_filebuf_char_open(basic_filebuf_char *this, const char *name, int mode, int prot)
2341 wchar_t nameW[FILENAME_MAX];
2343 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
2345 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
2346 return NULL;
2347 return basic_filebuf_char_open_wchar(this, nameW, mode, prot);
2350 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDI@Z */
2351 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDI@Z */
2352 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode, 12)
2353 basic_filebuf_char* __thiscall basic_filebuf_char_open_mode(basic_filebuf_char *this, const char *name, unsigned int mode)
2355 return basic_filebuf_char_open(this, name, mode, SH_DENYNO);
2358 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
2359 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
2360 #define call_basic_filebuf_char_overflow(this, c) CALL_VTBL_FUNC(this, 4, \
2361 int, (basic_filebuf_char*, int), (this, c))
2362 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_overflow, 8)
2363 int __thiscall basic_filebuf_char_overflow(basic_filebuf_char *this, int c)
2365 char buf[8], *dyn_buf;
2366 char ch = c, *to_next;
2367 const char *from_next;
2368 int ret, max_size;
2371 TRACE("(%p %d)\n", this, c);
2373 if(!basic_filebuf_char_is_open(this))
2374 return EOF;
2375 if(c == EOF)
2376 return !c;
2378 if(!this->cvt)
2379 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
2381 from_next = &ch;
2382 do {
2383 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1,
2384 &from_next, buf, buf+sizeof(buf), &to_next);
2386 switch(ret) {
2387 case CODECVT_partial:
2388 if(to_next == buf)
2389 break;
2390 /* fall through */
2391 case CODECVT_ok:
2392 if(!fwrite(buf, to_next-buf, 1, this->file))
2393 return EOF;
2394 if(ret == CODECVT_partial)
2395 continue;
2396 return c;
2397 case CODECVT_noconv:
2398 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
2399 default:
2400 return EOF;
2402 } while(0);
2404 max_size = codecvt_base_max_length(&this->cvt->base);
2405 dyn_buf = malloc(max_size);
2406 if(!dyn_buf)
2407 return EOF;
2409 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1,
2410 &from_next, dyn_buf, dyn_buf+max_size, &to_next);
2412 switch(ret) {
2413 case CODECVT_ok:
2414 ret = fwrite(dyn_buf, to_next-dyn_buf, 1, this->file);
2415 free(dyn_buf);
2416 return ret ? c : EOF;
2417 case CODECVT_partial:
2418 ERR("buffer should be big enough to store all output\n");
2419 /* fall through */
2420 default:
2421 free(dyn_buf);
2422 return EOF;
2426 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
2427 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
2428 #define call_basic_filebuf_char_pbackfail(this, c) CALL_VTBL_FUNC(this, 8, \
2429 int, (basic_filebuf_char*, int), (this, c))
2430 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_pbackfail, 8)
2431 int __thiscall basic_filebuf_char_pbackfail(basic_filebuf_char *this, int c)
2433 TRACE("(%p %d)\n", this, c);
2435 if(!basic_filebuf_char_is_open(this))
2436 return EOF;
2438 if(basic_streambuf_char_gptr(&this->base)>basic_streambuf_char_eback(&this->base)
2439 && (c==EOF || basic_streambuf_char_gptr(&this->base)[-1]==(char)c)) {
2440 basic_streambuf_char__Gndec(&this->base);
2441 return c==EOF ? !c : c;
2442 }else if(c!=EOF && !this->cvt) {
2443 return ungetc(c, this->file);
2446 return EOF;
2449 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2450 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2451 #define call_basic_filebuf_char_uflow(this) CALL_VTBL_FUNC(this, 20, \
2452 int, (basic_filebuf_char*), (this))
2453 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_uflow, 4)
2454 int __thiscall basic_filebuf_char_uflow(basic_filebuf_char *this)
2456 char ch, buf[128], *to_next;
2457 const char *buf_next;
2458 int c, i;
2460 TRACE("(%p)\n", this);
2462 if(!basic_filebuf_char_is_open(this))
2463 return EOF;
2465 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
2466 return *basic_streambuf_char__Gninc(&this->base);
2468 c = fgetc(this->file);
2469 if(!this->cvt || !c)
2470 return c;
2472 buf_next = buf;
2473 for(i=0; i < sizeof(buf)/sizeof(char); i++) {
2474 buf[i] = c;
2476 switch(codecvt_char_in(this->cvt, &this->state, buf_next,
2477 buf+i+1, &buf_next, &ch, &ch+1, &to_next)) {
2478 case CODECVT_partial:
2479 case CODECVT_ok:
2480 if(to_next == &ch) {
2481 c = fgetc(this->file);
2482 if(!c)
2483 return EOF;
2484 continue;
2487 for(i--; i>=buf_next-buf; i--)
2488 ungetc(buf[i], this->file);
2489 return ch;
2490 case CODECVT_noconv:
2491 return buf[0];
2492 default:
2493 return EOF;
2497 FIXME("buffer is to small\n");
2498 return EOF;
2501 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2502 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2503 #define call_basic_filebuf_char_underflow(this) CALL_VTBL_FUNC(this, 16, \
2504 int, (basic_filebuf_char*), (this))
2505 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_underflow, 4)
2506 int __thiscall basic_filebuf_char_underflow(basic_filebuf_char *this)
2508 int ret;
2510 TRACE("(%p)\n", this);
2512 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
2513 return *basic_streambuf_char_gptr(&this->base);
2515 ret = call_basic_filebuf_char_uflow(this);
2516 if(ret)
2517 ret = call_basic_filebuf_char_pbackfail(this, ret);
2518 return ret;
2521 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2522 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2523 #define call_basic_filebuf_char_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 36, \
2524 fpos_int*, (basic_filebuf_char*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
2525 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekoff, 20)
2526 fpos_int* __thiscall basic_filebuf_char_seekoff(basic_filebuf_char *this,
2527 fpos_int *ret, streamoff off, int way, int mode)
2529 fpos_t pos;
2531 TRACE("(%p %p %ld %d %d)\n", this, ret, off, way, mode);
2533 if(!basic_filebuf_char_is_open(this) || !basic_filebuf_char__Endwrite(this)
2534 || fseek(this->file, off, way)) {
2535 ret->off = 0;
2536 ret->pos = -1;
2537 ret->state = 0;
2538 return ret;
2541 fgetpos(this->file, &pos);
2542 ret->off = 0;
2543 ret->pos = pos;
2544 ret->state = this->state;
2545 return ret;
2548 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2549 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2550 #define call_basic_filebuf_char_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 40, \
2551 fpos_int*, (basic_filebuf_char*, fpos_int*, fpos_int, mode), (this, ret, pos, mode))
2552 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekpos, 36)
2553 fpos_int* __thiscall basic_filebuf_char_seekpos(basic_filebuf_char *this,
2554 fpos_int *ret, fpos_int pos, int mode)
2556 fpos_t fpos;
2558 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
2560 if(!basic_filebuf_char_is_open(this) || !basic_filebuf_char__Endwrite(this)
2561 || fseek(this->file, (LONG)pos.pos, SEEK_SET)
2562 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
2563 ret->off = 0;
2564 ret->pos = -1;
2565 ret->state = 0;
2566 return ret;
2569 fgetpos(this->file, &fpos);
2570 ret->off = 0;
2571 ret->pos = fpos;
2572 ret->state = this->state;
2573 return ret;
2576 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PADH@Z */
2577 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAD_J@Z */
2578 #define call_basic_filebuf_char_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 44, \
2579 basic_streambuf_char*, (basic_filebuf_char*, char*, streamsize), (this, buf, count))
2580 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_setbuf, 12)
2581 basic_streambuf_char* __thiscall basic_filebuf_char_setbuf(basic_filebuf_char *this, char *buf, streamsize count)
2583 TRACE("(%p %p %ld)\n", this, buf, count);
2585 if(!basic_filebuf_char_is_open(this))
2586 return NULL;
2588 if(setvbuf(this->file, buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count))
2589 return NULL;
2591 basic_filebuf_char__Init(this, this->file, INITFL_open);
2592 return &this->base;
2595 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2596 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2597 #define call_basic_filebuf_char_sync(this) CALL_VTBL_FUNC(this, 48, \
2598 int, (basic_filebuf_char*), (this))
2599 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_sync, 4)
2600 int __thiscall basic_filebuf_char_sync(basic_filebuf_char *this)
2602 TRACE("(%p)\n", this);
2604 if(!basic_filebuf_char_is_open(this))
2605 return 0;
2607 if(call_basic_filebuf_char_overflow(this, EOF) == EOF)
2608 return 0;
2609 return fflush(this->file);
2612 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
2613 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
2614 #define call_basic_filebuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 52, \
2615 void, (basic_filebuf_char*, const locale*), (this, loc))
2616 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_imbue, 8)
2617 void __thiscall basic_filebuf_char_imbue(basic_filebuf_char *this, const locale *loc)
2619 TRACE("(%p %p)\n", this, loc);
2620 basic_filebuf_char__Initcvt(this, codecvt_char_use_facet(loc));
2623 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */
2624 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAHH@Z */
2625 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Getstate, 8)
2626 int __thiscall basic_stringbuf_char__Getstate(basic_stringbuf_char *this, IOSB_openmode mode)
2628 int state = 0;
2630 if(!(mode & OPENMODE_in))
2631 state |= STRINGBUF_no_read;
2633 if(!(mode & OPENMODE_out))
2634 state |= STRINGBUF_no_write;
2636 if(mode & OPENMODE_ate)
2637 state |= STRINGBUF_at_end;
2639 if(mode & OPENMODE_app)
2640 state |= STRINGBUF_append;
2642 return state;
2645 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXPBDIH@Z */
2646 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXPEBD_KH@Z */
2647 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Init, 16)
2648 void __thiscall basic_stringbuf_char__Init(basic_stringbuf_char *this, const char *str, MSVCP_size_t count, int state)
2650 TRACE("(%p, %p, %ld, %d)\n", this, str, count, state);
2652 basic_streambuf_char__Init_empty(&this->base);
2654 this->state = state;
2655 this->seekhigh = NULL;
2657 if(count && str) {
2658 char *buf = MSVCRT_operator_new(count);
2659 if(!buf) {
2660 ERR("Out of memory\n");
2661 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
2664 memcpy(buf, str, count);
2665 this->seekhigh = buf + count;
2667 this->state |= STRINGBUF_allocated;
2669 if(!(state & STRINGBUF_no_read))
2670 basic_streambuf_char_setg(&this->base, buf, buf, buf + count);
2672 if(!(state & STRINGBUF_no_write)) {
2673 basic_streambuf_char_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
2675 if(!basic_streambuf_char_gptr(&this->base))
2676 basic_streambuf_char_setg(&this->base, buf, 0, buf);
2681 /* ??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 */
2682 /* ??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 */
2683 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_str, 12)
2684 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_str(basic_stringbuf_char *this,
2685 const basic_string_char *str, IOSB_openmode mode)
2687 TRACE("(%p %p %d)\n", this, str, mode);
2689 basic_streambuf_char_ctor(&this->base);
2690 this->base.vtable = &MSVCP_basic_stringbuf_char_vtable;
2692 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str),
2693 str->size, basic_stringbuf_char__Getstate(this, mode));
2694 return this;
2697 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
2698 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
2699 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_mode, 8)
2700 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_mode(
2701 basic_stringbuf_char *this, IOSB_openmode mode)
2703 TRACE("(%p %d)\n", this, mode);
2705 basic_streambuf_char_ctor(&this->base);
2706 this->base.vtable = &MSVCP_basic_stringbuf_char_vtable;
2708 basic_stringbuf_char__Init(this, NULL, 0, basic_stringbuf_char__Getstate(this, mode));
2709 return this;
2712 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
2713 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
2714 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor, 4)
2715 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor(basic_stringbuf_char *this)
2717 return basic_stringbuf_char_ctor_mode(this, OPENMODE_in|OPENMODE_out);
2720 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXXZ */
2721 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXXZ */
2722 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Tidy, 4)
2723 void __thiscall basic_stringbuf_char__Tidy(basic_stringbuf_char *this)
2725 TRACE("(%p)\n", this);
2727 if(this->state & STRINGBUF_allocated) {
2728 MSVCRT_operator_delete(basic_streambuf_char_eback(&this->base));
2729 this->seekhigh = NULL;
2730 this->state &= ~STRINGBUF_allocated;
2733 basic_streambuf_char__Init_empty(&this->base);
2736 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
2737 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
2738 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_dtor, 4)
2739 void __thiscall basic_stringbuf_char_dtor(basic_stringbuf_char *this)
2741 TRACE("(%p)\n", this);
2743 basic_stringbuf_char__Tidy(this);
2744 basic_streambuf_char_dtor(&this->base);
2747 DEFINE_THISCALL_WRAPPER(MSVCP_basic_stringbuf_char_vector_dtor, 8)
2748 basic_stringbuf_char* __thiscall MSVCP_basic_stringbuf_char_vector_dtor(basic_stringbuf_char *this, unsigned int flags)
2750 TRACE("(%p %x)\n", this, flags);
2752 if(flags & 2) {
2753 /* we have an array, with the number of elements stored before the first object */
2754 int i, *ptr = (int *) this - 1;
2756 for (i = *ptr - 1; i >= 0; i--)
2757 basic_stringbuf_char_dtor(this+i);
2759 MSVCRT_operator_delete(ptr);
2760 }else {
2761 basic_stringbuf_char_dtor(this);
2763 if(flags & 1)
2764 MSVCRT_operator_delete(this);
2767 return this;
2770 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
2771 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
2772 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_overflow, 8)
2773 int __thiscall basic_stringbuf_char_overflow(basic_stringbuf_char *this, int meta)
2775 MSVCP_size_t oldsize, size;
2776 char *ptr, *buf;
2778 TRACE("(%p %x)\n", this, meta);
2780 if(meta == EOF)
2781 return !EOF;
2782 if(this->state & STRINGBUF_no_write)
2783 return EOF;
2785 ptr = basic_streambuf_char_pptr(&this->base);
2786 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
2787 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
2788 this->seekhigh, basic_streambuf_char_epptr(&this->base));
2790 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
2791 return (*basic_streambuf_char__Pninc(&this->base) = meta);
2793 oldsize = (ptr ? basic_streambuf_char_epptr(&this->base)-basic_streambuf_char_eback(&this->base): 0);
2794 size = oldsize|0xf;
2795 size += size/2;
2796 buf = MSVCRT_operator_new(size);
2797 if(!buf) {
2798 ERR("Out of memory\n");
2799 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
2802 if(!oldsize) {
2803 this->seekhigh = buf;
2804 basic_streambuf_char_setp(&this->base, buf, buf+size);
2805 if(this->state & STRINGBUF_no_read)
2806 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
2807 else
2808 basic_streambuf_char_setg(&this->base, buf, buf, buf+1);
2810 this->state |= STRINGBUF_allocated;
2811 }else {
2812 ptr = basic_streambuf_char_eback(&this->base);
2813 memcpy(buf, ptr, oldsize);
2815 this->seekhigh = buf+(this->seekhigh-ptr);
2816 basic_streambuf_char_setp_next(&this->base, buf,
2817 buf+(basic_streambuf_char_pptr(&this->base)-ptr), buf+size);
2818 if(this->state & STRINGBUF_no_read)
2819 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
2820 else
2821 basic_streambuf_char_setg(&this->base, buf,
2822 buf+(basic_streambuf_char_gptr(&this->base)-ptr),
2823 basic_streambuf_char_pptr(&this->base)+1);
2825 MSVCRT_operator_delete(ptr);
2828 return (*basic_streambuf_char__Pninc(&this->base) = meta);
2831 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
2832 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
2833 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_pbackfail, 8)
2834 int __thiscall basic_stringbuf_char_pbackfail(basic_stringbuf_char *this, int c)
2836 char *cur;
2838 TRACE("(%p %x)\n", this, c);
2840 cur = basic_streambuf_char_gptr(&this->base);
2841 if(!cur || cur==basic_streambuf_char_eback(&this->base)
2842 || (c!=EOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
2843 return EOF;
2845 if(c != EOF)
2846 cur[-1] = c;
2847 basic_streambuf_char_gbump(&this->base, -1);
2848 return c==EOF ? !EOF : c;
2851 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHXZ */
2852 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHXZ */
2853 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_underflow, 4)
2854 int __thiscall basic_stringbuf_char_underflow(basic_stringbuf_char *this)
2856 char *ptr, *cur;
2858 TRACE("(%p)\n", this);
2860 cur = basic_streambuf_char_gptr(&this->base);
2861 if(!cur || this->state&STRINGBUF_no_read)
2862 return EOF;
2864 ptr = basic_streambuf_char_pptr(&this->base);
2865 if(this->seekhigh < ptr)
2866 this->seekhigh = ptr;
2868 ptr = basic_streambuf_char_egptr(&this->base);
2869 if(this->seekhigh > ptr)
2870 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base), cur, this->seekhigh);
2872 if(cur < this->seekhigh)
2873 return *cur;
2874 return EOF;
2877 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2878 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2879 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekoff, 20)
2880 fpos_int* __thiscall basic_stringbuf_char_seekoff(basic_stringbuf_char *this,
2881 fpos_int *ret, streamoff off, int way, int mode)
2883 char *beg, *cur_r, *cur_w;
2885 TRACE("(%p %p %ld %d %d)\n", this, ret, off, way, mode);
2887 cur_w = basic_streambuf_char_pptr(&this->base);
2888 if(cur_w > this->seekhigh)
2889 this->seekhigh = cur_w;
2891 ret->off = 0;
2892 ret->state = 0;
2894 beg = basic_streambuf_char_eback(&this->base);
2895 cur_r = basic_streambuf_char_gptr(&this->base);
2896 if((mode & OPENMODE_in) && cur_r) {
2897 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
2898 off += cur_r-beg;
2899 else if(way == SEEKDIR_end)
2900 off += this->seekhigh-beg;
2901 else if(way != SEEKDIR_beg)
2902 off = -1;
2904 if(off<0 || off>this->seekhigh-beg) {
2905 off = -1;
2906 }else {
2907 basic_streambuf_char_gbump(&this->base, beg-cur_r+off);
2908 if((mode & OPENMODE_out) && cur_w) {
2909 basic_streambuf_char_setp_next(&this->base, beg,
2910 basic_streambuf_char_gptr(&this->base),
2911 basic_streambuf_char_epptr(&this->base));
2914 }else if((mode & OPENMODE_out) && cur_w) {
2915 if(way == SEEKDIR_cur)
2916 off += cur_w-beg;
2917 else if(way == SEEKDIR_end)
2918 off += this->seekhigh-beg;
2919 else if(way != SEEKDIR_beg)
2920 off = -1;
2922 if(off<0 || off>this->seekhigh-beg)
2923 off = -1;
2924 else
2925 basic_streambuf_char_pbump(&this->base, beg-cur_w+off);
2926 }else {
2927 off = -1;
2930 ret->pos = off;
2931 return ret;
2934 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2935 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2936 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekpos, 36)
2937 fpos_int* __thiscall basic_stringbuf_char_seekpos(basic_stringbuf_char *this,
2938 fpos_int *ret, fpos_int pos, int mode)
2940 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
2942 if(pos.off==0 && pos.pos==-1 && pos.state==0) {
2943 *ret = pos;
2944 return ret;
2947 return basic_stringbuf_char_seekoff(this, ret, pos.off, SEEKDIR_beg, mode);
2950 /* ?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 */
2951 /* ?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 */
2952 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_set, 8)
2953 void __thiscall basic_stringbuf_char_str_set(basic_stringbuf_char *this, const basic_string_char *str)
2955 TRACE("(%p %p)\n", this, str);
2957 basic_stringbuf_char__Tidy(this);
2958 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str), str->size, this->state);
2961 /* ?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 */
2962 /* ?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 */
2963 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_get, 8)
2964 basic_string_char* __thiscall basic_stringbuf_char_str_get(const basic_stringbuf_char *this, basic_string_char *ret)
2966 char *ptr;
2968 TRACE("(%p)\n", this);
2970 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_char_pptr(&this->base)) {
2971 char *pptr;
2973 ptr = basic_streambuf_char_pbase(&this->base);
2974 pptr = basic_streambuf_char_pptr(&this->base);
2976 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
2979 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_char_gptr(&this->base)) {
2980 ptr = basic_streambuf_char_eback(&this->base);
2981 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, basic_streambuf_char_egptr(&this->base) - ptr);
2984 return MSVCP_basic_string_char_ctor(ret);
2987 /* ?_Getstate@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AAEHH@Z */
2988 /* ?_Getstate@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AEAAHH@Z */
2989 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEHH@Z */
2990 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAHH@Z */
2991 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Getstate, 8)
2992 int __thiscall basic_stringbuf_wchar__Getstate(basic_stringbuf_wchar *this, IOSB_openmode mode)
2994 int state = 0;
2996 if(!(mode & OPENMODE_in))
2997 state |= STRINGBUF_no_read;
2999 if(!(mode & OPENMODE_out))
3000 state |= STRINGBUF_no_write;
3002 if(mode & OPENMODE_ate)
3003 state |= STRINGBUF_at_end;
3005 if(mode & OPENMODE_app)
3006 state |= STRINGBUF_append;
3008 return state;
3011 /* ?_Init@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXPB_WIH@Z */
3012 /* ?_Init@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAXPEB_W_KH@Z */
3013 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXPBGIH@Z */
3014 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXPEBG_KH@Z */
3015 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Init, 16)
3016 void __thiscall basic_stringbuf_wchar__Init(basic_stringbuf_wchar *this, const wchar_t *str, MSVCP_size_t count, int state)
3018 TRACE("(%p, %p, %ld, %d)\n", this, str, count, state);
3020 basic_streambuf_wchar__Init_empty(&this->base);
3022 this->state = state;
3023 this->seekhigh = NULL;
3025 if(count && str) {
3026 wchar_t *buf = MSVCRT_operator_new(count);
3027 if(!buf) {
3028 ERR("Out of memory\n");
3029 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
3032 memcpy(buf, str, count);
3033 this->seekhigh = buf + count;
3035 this->state |= STRINGBUF_allocated;
3037 if(!(state & STRINGBUF_no_read))
3038 basic_streambuf_wchar_setg(&this->base, buf, buf, buf + count);
3040 if(!(state & STRINGBUF_no_write)) {
3041 basic_streambuf_wchar_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
3043 if(!basic_streambuf_wchar_gptr(&this->base))
3044 basic_streambuf_wchar_setg(&this->base, buf, 0, buf);
3049 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@H@Z */
3050 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@H@Z */
3051 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor_str, 12)
3052 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor_str(basic_stringbuf_wchar *this,
3053 const basic_string_wchar *str, IOSB_openmode mode)
3055 TRACE("(%p %p %d)\n", this, str, mode);
3057 basic_streambuf_wchar_ctor(&this->base);
3058 this->base.vtable = &MSVCP_basic_stringbuf_wchar_vtable;
3060 basic_stringbuf_wchar__Init(this, MSVCP_basic_string_wchar_c_str(str),
3061 str->size, basic_stringbuf_wchar__Getstate(this, mode));
3062 return this;
3065 /* ??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 */
3066 /* ??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 */
3067 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_str, 12)
3068 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_str(basic_stringbuf_wchar *this,
3069 const basic_string_wchar *str, IOSB_openmode mode)
3071 basic_stringbuf_wchar_ctor_str(this, str, mode);
3072 this->base.vtable = &MSVCP_basic_stringbuf_short_vtable;
3073 return this;
3076 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
3077 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
3078 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor_mode, 8)
3079 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor_mode(
3080 basic_stringbuf_wchar *this, IOSB_openmode mode)
3082 TRACE("(%p %d)\n", this, mode);
3084 basic_streambuf_wchar_ctor(&this->base);
3085 this->base.vtable = &MSVCP_basic_stringbuf_wchar_vtable;
3087 basic_stringbuf_wchar__Init(this, NULL, 0, basic_stringbuf_wchar__Getstate(this, mode));
3088 return this;
3091 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
3092 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
3093 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_mode, 8)
3094 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_mode(
3095 basic_stringbuf_wchar *this, IOSB_openmode mode)
3097 basic_stringbuf_wchar_ctor_mode(this, mode);
3098 this->base.vtable = &MSVCP_basic_stringbuf_short_vtable;
3099 return this;
3102 /* ??_F?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
3103 /* ??_F?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
3104 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor, 4)
3105 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor(basic_stringbuf_wchar *this)
3107 return basic_stringbuf_wchar_ctor_mode(this, OPENMODE_in|OPENMODE_out);
3110 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
3111 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
3112 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor, 4)
3113 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor(basic_stringbuf_wchar *this)
3115 return basic_stringbuf_short_ctor_mode(this, OPENMODE_in|OPENMODE_out);
3118 /* ?_Tidy@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXXZ */
3119 /* ?_Tidy@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAXXZ */
3120 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXXZ */
3121 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXXZ */
3122 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Tidy, 4)
3123 void __thiscall basic_stringbuf_wchar__Tidy(basic_stringbuf_wchar *this)
3125 TRACE("(%p)\n", this);
3127 if(this->state & STRINGBUF_allocated) {
3128 MSVCRT_operator_delete(basic_streambuf_wchar_eback(&this->base));
3129 this->seekhigh = NULL;
3130 this->state &= ~STRINGBUF_allocated;
3133 basic_streambuf_wchar__Init_empty(&this->base);
3136 /* ??1?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
3137 /* ??1?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
3138 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
3139 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
3140 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_dtor, 4)
3141 void __thiscall basic_stringbuf_wchar_dtor(basic_stringbuf_wchar *this)
3143 TRACE("(%p)\n", this);
3145 basic_stringbuf_wchar__Tidy(this);
3146 basic_streambuf_wchar_dtor(&this->base);
3149 DEFINE_THISCALL_WRAPPER(MSVCP_basic_stringbuf_wchar_vector_dtor, 8)
3150 basic_stringbuf_wchar* __thiscall MSVCP_basic_stringbuf_wchar_vector_dtor(basic_stringbuf_wchar *this, unsigned int flags)
3152 TRACE("(%p %x)\n", this, flags);
3154 if(flags & 2) {
3155 /* we have an array, with the number of elements stored before the first object */
3156 int i, *ptr = (int *) this - 1;
3158 for (i = *ptr - 1; i >= 0; i--)
3159 basic_stringbuf_wchar_dtor(this+i);
3161 MSVCRT_operator_delete(ptr);
3162 }else {
3163 basic_stringbuf_wchar_dtor(this);
3165 if(flags & 1)
3166 MSVCRT_operator_delete(this);
3169 return this;
3172 DEFINE_THISCALL_WRAPPER(MSVCP_basic_stringbuf_short_vector_dtor, 8)
3173 basic_stringbuf_wchar* __thiscall MSVCP_basic_stringbuf_short_vector_dtor(basic_stringbuf_wchar *this, unsigned int flags)
3175 return MSVCP_basic_stringbuf_wchar_vector_dtor(this, flags);
3178 /* ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z */
3179 /* ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z */
3180 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
3181 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
3182 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_overflow, 8)
3183 unsigned short __thiscall basic_stringbuf_wchar_overflow(basic_stringbuf_wchar *this, unsigned short meta)
3185 MSVCP_size_t oldsize, size;
3186 wchar_t *ptr, *buf;
3188 TRACE("(%p %x)\n", this, meta);
3190 if(meta == WEOF)
3191 return !WEOF;
3192 if(this->state & STRINGBUF_no_write)
3193 return WEOF;
3195 ptr = basic_streambuf_wchar_pptr(&this->base);
3196 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
3197 basic_streambuf_wchar_setp_next(&this->base, basic_streambuf_wchar_pbase(&this->base),
3198 this->seekhigh, basic_streambuf_wchar_epptr(&this->base));
3200 if(ptr && ptr<basic_streambuf_wchar_epptr(&this->base))
3201 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
3203 oldsize = (ptr ? basic_streambuf_wchar_epptr(&this->base)-basic_streambuf_wchar_eback(&this->base): 0);
3204 size = oldsize|0xf;
3205 size += size/2;
3206 buf = MSVCRT_operator_new(size);
3207 if(!buf) {
3208 ERR("Out of memory\n");
3209 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
3212 if(!oldsize) {
3213 this->seekhigh = buf;
3214 basic_streambuf_wchar_setp(&this->base, buf, buf+size);
3215 if(this->state & STRINGBUF_no_read)
3216 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
3217 else
3218 basic_streambuf_wchar_setg(&this->base, buf, buf, buf+1);
3220 this->state |= STRINGBUF_allocated;
3221 }else {
3222 ptr = basic_streambuf_wchar_eback(&this->base);
3223 memcpy(buf, ptr, oldsize);
3225 this->seekhigh = buf+(this->seekhigh-ptr);
3226 basic_streambuf_wchar_setp_next(&this->base, buf,
3227 buf+(basic_streambuf_wchar_pptr(&this->base)-ptr), buf+size);
3228 if(this->state & STRINGBUF_no_read)
3229 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
3230 else
3231 basic_streambuf_wchar_setg(&this->base, buf,
3232 buf+(basic_streambuf_wchar_gptr(&this->base)-ptr),
3233 basic_streambuf_wchar_pptr(&this->base)+1);
3235 MSVCRT_operator_delete(ptr);
3238 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
3241 /* ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z */
3242 /* ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z */
3243 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
3244 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
3245 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_pbackfail, 8)
3246 unsigned short __thiscall basic_stringbuf_wchar_pbackfail(basic_stringbuf_wchar *this, unsigned short c)
3248 wchar_t *cur;
3250 TRACE("(%p %x)\n", this, c);
3252 cur = basic_streambuf_wchar_gptr(&this->base);
3253 if(!cur || cur==basic_streambuf_wchar_eback(&this->base)
3254 || (c!=WEOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
3255 return WEOF;
3257 if(c != WEOF)
3258 cur[-1] = c;
3259 basic_streambuf_wchar_gbump(&this->base, -1);
3260 return c==WEOF ? !WEOF : c;
3263 /* ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGXZ */
3264 /* ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGXZ */
3265 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGXZ */
3266 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGXZ */
3267 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_underflow, 4)
3268 unsigned short __thiscall basic_stringbuf_wchar_underflow(basic_stringbuf_wchar *this)
3270 wchar_t *ptr, *cur;
3272 TRACE("(%p)\n", this);
3274 cur = basic_streambuf_wchar_gptr(&this->base);
3275 if(!cur || this->state&STRINGBUF_no_read)
3276 return WEOF;
3278 ptr = basic_streambuf_wchar_pptr(&this->base);
3279 if(this->seekhigh < ptr)
3280 this->seekhigh = ptr;
3282 ptr = basic_streambuf_wchar_egptr(&this->base);
3283 if(this->seekhigh > ptr)
3284 basic_streambuf_wchar_setg(&this->base, basic_streambuf_wchar_eback(&this->base), cur, this->seekhigh);
3286 if(cur < this->seekhigh)
3287 return *cur;
3288 return WEOF;
3291 /* ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3292 /* ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3293 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3294 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3295 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekoff, 20)
3296 fpos_int* __thiscall basic_stringbuf_wchar_seekoff(basic_stringbuf_wchar *this,
3297 fpos_int *ret, streamoff off, int way, int mode)
3299 wchar_t *beg, *cur_r, *cur_w;
3301 TRACE("(%p %p %ld %d %d)\n", this, ret, off, way, mode);
3303 cur_w = basic_streambuf_wchar_pptr(&this->base);
3304 if(cur_w > this->seekhigh)
3305 this->seekhigh = cur_w;
3307 ret->off = 0;
3308 ret->state = 0;
3310 beg = basic_streambuf_wchar_eback(&this->base);
3311 cur_r = basic_streambuf_wchar_gptr(&this->base);
3312 if((mode & OPENMODE_in) && cur_r) {
3313 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
3314 off += cur_r-beg;
3315 else if(way == SEEKDIR_end)
3316 off += this->seekhigh-beg;
3317 else if(way != SEEKDIR_beg)
3318 off = -1;
3320 if(off<0 || off>this->seekhigh-beg) {
3321 off = -1;
3322 }else {
3323 basic_streambuf_wchar_gbump(&this->base, beg-cur_r+off);
3324 if((mode & OPENMODE_out) && cur_w) {
3325 basic_streambuf_wchar_setp_next(&this->base, beg,
3326 basic_streambuf_wchar_gptr(&this->base),
3327 basic_streambuf_wchar_epptr(&this->base));
3330 }else if((mode & OPENMODE_out) && cur_w) {
3331 if(way == SEEKDIR_cur)
3332 off += cur_w-beg;
3333 else if(way == SEEKDIR_end)
3334 off += this->seekhigh-beg;
3335 else if(way != SEEKDIR_beg)
3336 off = -1;
3338 if(off<0 || off>this->seekhigh-beg)
3339 off = -1;
3340 else
3341 basic_streambuf_wchar_pbump(&this->base, beg-cur_w+off);
3342 }else {
3343 off = -1;
3346 ret->pos = off;
3347 return ret;
3350 /* ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3351 /* ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3352 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3353 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3354 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekpos, 36)
3355 fpos_int* __thiscall basic_stringbuf_wchar_seekpos(basic_stringbuf_wchar *this,
3356 fpos_int *ret, fpos_int pos, int mode)
3358 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
3360 if(pos.off==0 && pos.pos==-1 && pos.state==0) {
3361 *ret = pos;
3362 return ret;
3365 return basic_stringbuf_wchar_seekoff(this, ret, pos.off, SEEKDIR_beg, mode);
3368 /* ?str@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
3369 /* ?str@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
3370 /* ?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 */
3371 /* ?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 */
3372 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_str_set, 8)
3373 void __thiscall basic_stringbuf_wchar_str_set(basic_stringbuf_wchar *this, const basic_string_wchar *str)
3375 TRACE("(%p %p)\n", this, str);
3377 basic_stringbuf_wchar__Tidy(this);
3378 basic_stringbuf_wchar__Init(this, MSVCP_basic_string_wchar_c_str(str), str->size, this->state);
3381 /* ?str@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3382 /* ?str@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
3383 /* ?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 */
3384 /* ?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 */
3385 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_str_get, 8)
3386 basic_string_wchar* __thiscall basic_stringbuf_wchar_str_get(const basic_stringbuf_wchar *this, basic_string_wchar *ret)
3388 wchar_t *ptr;
3390 TRACE("(%p)\n", this);
3392 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_wchar_pptr(&this->base)) {
3393 wchar_t *pptr;
3395 ptr = basic_streambuf_wchar_pbase(&this->base);
3396 pptr = basic_streambuf_wchar_pptr(&this->base);
3398 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
3401 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_wchar_gptr(&this->base)) {
3402 ptr = basic_streambuf_wchar_eback(&this->base);
3403 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, basic_streambuf_wchar_egptr(&this->base) - ptr);
3406 return MSVCP_basic_string_wchar_ctor(ret);
3409 /* ??0ios_base@std@@IAE@XZ */
3410 /* ??0ios_base@std@@IEAA@XZ */
3411 DEFINE_THISCALL_WRAPPER(ios_base_ctor, 4)
3412 ios_base* __thiscall ios_base_ctor(ios_base *this)
3414 TRACE("(%p)\n", this);
3415 this->vtable = &MSVCP_ios_base_vtable;
3416 return this;
3419 /* ??0ios_base@std@@QAE@ABV01@@Z */
3420 /* ??0ios_base@std@@QEAA@AEBV01@@Z */
3421 DEFINE_THISCALL_WRAPPER(ios_base_copy_ctor, 8)
3422 ios_base* __thiscall ios_base_copy_ctor(ios_base *this, const ios_base *copy)
3424 TRACE("(%p %p)\n", this, copy);
3425 *this = *copy;
3426 this->vtable = &MSVCP_ios_base_vtable;
3427 return this;
3430 /* ?_Callfns@ios_base@std@@AAEXW4event@12@@Z */
3431 /* ?_Callfns@ios_base@std@@AEAAXW4event@12@@Z */
3432 DEFINE_THISCALL_WRAPPER(ios_base_Callfns, 8)
3433 void __thiscall ios_base_Callfns(ios_base *this, IOS_BASE_event event)
3435 IOS_BASE_fnarray *cur;
3437 TRACE("(%p %x)\n", this, event);
3439 for(cur=this->calls; cur; cur=cur->next)
3440 cur->event_handler(event, this, cur->index);
3443 /* ?_Tidy@ios_base@std@@AAAXXZ */
3444 /* ?_Tidy@ios_base@std@@AEAAXXZ */
3445 void CDECL ios_base_Tidy(ios_base *this)
3447 IOS_BASE_iosarray *arr_cur, *arr_next;
3448 IOS_BASE_fnarray *event_cur, *event_next;
3450 TRACE("(%p)\n", this);
3452 ios_base_Callfns(this, EVENT_erase_event);
3454 for(arr_cur=this->arr; arr_cur; arr_cur=arr_next) {
3455 arr_next = arr_cur->next;
3456 MSVCRT_operator_delete(arr_cur);
3458 this->arr = NULL;
3460 for(event_cur=this->calls; event_cur; event_cur=event_next) {
3461 event_next = event_cur->next;
3462 MSVCRT_operator_delete(event_cur);
3464 this->calls = NULL;
3467 /* ?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z */
3468 /* ?_Ios_base_dtor@ios_base@std@@CAXPEAV12@@Z */
3469 void CDECL ios_base_Ios_base_dtor(ios_base *obj)
3471 TRACE("(%p)\n", obj);
3472 if(obj->loc) {
3473 locale_dtor(obj->loc);
3474 MSVCRT_operator_delete(obj->loc);
3476 ios_base_Tidy(obj);
3479 /* ??1ios_base@std@@UAE@XZ */
3480 /* ??1ios_base@std@@UEAA@XZ */
3481 DEFINE_THISCALL_WRAPPER(ios_base_dtor, 4)
3482 void __thiscall ios_base_dtor(ios_base *this)
3484 ios_base_Ios_base_dtor(this);
3487 DEFINE_THISCALL_WRAPPER(MSVCP_ios_base_vector_dtor, 8)
3488 ios_base* __thiscall MSVCP_ios_base_vector_dtor(ios_base *this, unsigned int flags)
3490 TRACE("(%p %x)\n", this, flags);
3491 if(flags & 2) {
3492 /* we have an array, with the number of elements stored before the first object */
3493 int i, *ptr = (int *)this-1;
3495 for(i=*ptr-1; i>=0; i--)
3496 ios_base_dtor(this+i);
3497 MSVCRT_operator_delete(ptr);
3498 } else {
3499 ios_base_dtor(this);
3500 if(flags & 1)
3501 MSVCRT_operator_delete(this);
3504 return this;
3507 DEFINE_THISCALL_WRAPPER(MSVCP_iosb_vector_dtor, 8)
3508 void* __thiscall MSVCP_iosb_vector_dtor(void *this, unsigned int flags)
3510 TRACE("(%p %x)\n", this, flags);
3511 if(flags & 2) {
3512 int *ptr = (int *)this-1;
3513 MSVCRT_operator_delete(ptr);
3514 } else {
3515 if(flags & 1)
3516 MSVCRT_operator_delete(this);
3519 return this;
3522 /* ?_Findarr@ios_base@std@@AAEAAU_Iosarray@12@H@Z */
3523 /* ?_Findarr@ios_base@std@@AEAAAEAU_Iosarray@12@H@Z */
3524 DEFINE_THISCALL_WRAPPER(ios_base_Findarr, 8)
3525 IOS_BASE_iosarray* __thiscall ios_base_Findarr(ios_base *this, int index)
3527 IOS_BASE_iosarray *p;
3529 TRACE("(%p %d)\n", this, index);
3531 for(p=this->arr; p; p=p->next) {
3532 if(p->index == index)
3533 return p;
3536 for(p=this->arr; p; p=p->next) {
3537 if(!p->long_val && !p->ptr_val) {
3538 p->index = index;
3539 return p;
3543 p = MSVCRT_operator_new(sizeof(IOS_BASE_iosarray));
3544 p->next = this->arr;
3545 p->index = index;
3546 p->long_val = 0;
3547 p->ptr_val = NULL;
3548 this->arr = p;
3549 return p;
3552 /* ?iword@ios_base@std@@QAEAAJH@Z */
3553 /* ?iword@ios_base@std@@QEAAAEAJH@Z */
3554 DEFINE_THISCALL_WRAPPER(ios_base_iword, 8)
3555 LONG* __thiscall ios_base_iword(ios_base *this, int index)
3557 TRACE("(%p %d)\n", this, index);
3558 return &ios_base_Findarr(this, index)->long_val;
3561 /* ?pword@ios_base@std@@QAEAAPAXH@Z */
3562 /* ?pword@ios_base@std@@QEAAAEAPEAXH@Z */
3563 DEFINE_THISCALL_WRAPPER(ios_base_pword, 8)
3564 void** __thiscall ios_base_pword(ios_base *this, int index)
3566 TRACE("(%p %d)\n", this, index);
3567 return &ios_base_Findarr(this, index)->ptr_val;
3570 /* ?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z */
3571 /* ?register_callback@ios_base@std@@QEAAXP6AXW4event@12@AEAV12@H@ZH@Z */
3572 DEFINE_THISCALL_WRAPPER(ios_base_register_callback, 12)
3573 void __thiscall ios_base_register_callback(ios_base *this, IOS_BASE_event_callback callback, int index)
3575 IOS_BASE_fnarray *event;
3577 TRACE("(%p %p %d)\n", this, callback, index);
3579 event = MSVCRT_operator_new(sizeof(IOS_BASE_fnarray));
3580 event->next = this->calls;
3581 event->index = index;
3582 event->event_handler = callback;
3583 this->calls = event;
3586 /* ?clear@ios_base@std@@QAEXH_N@Z */
3587 /* ?clear@ios_base@std@@QEAAXH_N@Z */
3588 DEFINE_THISCALL_WRAPPER(ios_base_clear_reraise, 12)
3589 void __thiscall ios_base_clear_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise)
3591 TRACE("(%p %x %x)\n", this, state, reraise);
3593 this->state = state & IOSTATE_mask;
3594 if(!(this->state & this->except))
3595 return;
3597 if(reraise)
3598 throw_exception(EXCEPTION_RERAISE, NULL);
3599 else if(this->state & this->except & IOSTATE_eofbit)
3600 throw_exception(EXCEPTION_FAILURE, "eofbit is set");
3601 else if(this->state & this->except & IOSTATE_failbit)
3602 throw_exception(EXCEPTION_FAILURE, "failbit is set");
3603 else if(this->state & this->except & IOSTATE_badbit)
3604 throw_exception(EXCEPTION_FAILURE, "badbit is set");
3605 else if(this->state & this->except & IOSTATE__Hardfail)
3606 throw_exception(EXCEPTION_FAILURE, "_Hardfail is set");
3609 /* ?clear@ios_base@std@@QAEXH@Z */
3610 /* ?clear@ios_base@std@@QEAAXH@Z */
3611 DEFINE_THISCALL_WRAPPER(ios_base_clear, 8)
3612 void __thiscall ios_base_clear(ios_base *this, IOSB_iostate state)
3614 ios_base_clear_reraise(this, state, FALSE);
3617 /* ?clear@ios_base@std@@QAEXI@Z */
3618 /* ?clear@ios_base@std@@QEAAXI@Z */
3619 DEFINE_THISCALL_WRAPPER(ios_base_clear_unsigned, 8)
3620 void __thiscall ios_base_clear_unsigned(ios_base *this, unsigned int state)
3622 ios_base_clear_reraise(this, (IOSB_iostate)state, FALSE);
3625 /* ?exceptions@ios_base@std@@QAEXH@Z */
3626 /* ?exceptions@ios_base@std@@QEAAXH@Z */
3627 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set, 8)
3628 void __thiscall ios_base_exceptions_set(ios_base *this, IOSB_iostate state)
3630 TRACE("(%p %x)\n", this, state);
3631 this->except = state & IOSTATE_mask;
3632 ios_base_clear(this, this->state);
3635 /* ?exceptions@ios_base@std@@QAEXI@Z */
3636 /* ?exceptions@ios_base@std@@QEAAXI@Z */
3637 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set_unsigned, 8)
3638 void __thiscall ios_base_exceptions_set_unsigned(ios_base *this, unsigned int state)
3640 TRACE("(%p %x)\n", this, state);
3641 ios_base_exceptions_set(this, state);
3644 /* ?exceptions@ios_base@std@@QBEHXZ */
3645 /* ?exceptions@ios_base@std@@QEBAHXZ */
3646 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_get, 4)
3647 IOSB_iostate __thiscall ios_base_exceptions_get(ios_base *this)
3649 TRACE("(%p)\n", this);
3650 return this->except;
3653 /* ?copyfmt@ios_base@std@@QAEAAV12@ABV12@@Z */
3654 /* ?copyfmt@ios_base@std@@QEAAAEAV12@AEBV12@@Z */
3655 DEFINE_THISCALL_WRAPPER(ios_base_copyfmt, 8)
3656 ios_base* __thiscall ios_base_copyfmt(ios_base *this, const ios_base *rhs)
3658 TRACE("(%p %p)\n", this, rhs);
3660 if(this != rhs) {
3661 IOS_BASE_iosarray *arr_cur;
3662 IOS_BASE_fnarray *event_cur;
3664 ios_base_Tidy(this);
3666 for(arr_cur=rhs->arr; arr_cur; arr_cur=arr_cur->next) {
3667 if(arr_cur->long_val)
3668 *ios_base_iword(this, arr_cur->index) = arr_cur->long_val;
3669 if(arr_cur->ptr_val)
3670 *ios_base_pword(this, arr_cur->index) = arr_cur->ptr_val;
3672 this->stdstr = rhs->stdstr;
3673 this->fmtfl = rhs->fmtfl;
3674 this->prec = rhs->prec;
3675 this->wide = rhs->wide;
3676 locale_operator_assign(this->loc, rhs->loc);
3678 for(event_cur=rhs->calls; event_cur; event_cur=event_cur->next)
3679 ios_base_register_callback(this, event_cur->event_handler, event_cur->index);
3681 ios_base_Callfns(this, EVENT_copyfmt_event);
3682 ios_base_exceptions_set(this, rhs->except);
3685 return this;
3688 /* ??4ios_base@std@@QAEAAV01@ABV01@@Z */
3689 /* ??4ios_base@std@@QEAAAEAV01@AEBV01@@Z */
3690 DEFINE_THISCALL_WRAPPER(ios_base_assign, 8)
3691 ios_base* __thiscall ios_base_assign(ios_base *this, const ios_base *right)
3693 TRACE("(%p %p)\n", this, right);
3695 if(this != right) {
3696 this->state = right->state;
3697 ios_base_copyfmt(this, right);
3700 return this;
3703 /* ?fail@ios_base@std@@QBE_NXZ */
3704 /* ?fail@ios_base@std@@QEBA_NXZ */
3705 DEFINE_THISCALL_WRAPPER(ios_base_fail, 4)
3706 MSVCP_bool __thiscall ios_base_fail(const ios_base *this)
3708 TRACE("(%p)\n", this);
3709 return (this->state & (IOSTATE_failbit|IOSTATE_badbit)) != 0;
3712 /* ??7ios_base@std@@QBE_NXZ */
3713 /* ??7ios_base@std@@QEBA_NXZ */
3714 DEFINE_THISCALL_WRAPPER(ios_base_op_succ, 4)
3715 MSVCP_bool __thiscall ios_base_op_succ(const ios_base *this)
3717 TRACE("(%p)\n", this);
3718 return ios_base_fail(this);
3721 /* ??Bios_base@std@@QBEPAXXZ */
3722 /* ??Bios_base@std@@QEBAPEAXXZ */
3723 DEFINE_THISCALL_WRAPPER(ios_base_op_fail, 4)
3724 void* __thiscall ios_base_op_fail(const ios_base *this)
3726 TRACE("(%p)\n", this);
3727 return ios_base_fail(this) ? NULL : (void*)this;
3730 /* ?_Addstd@ios_base@std@@SAXPAV12@@Z */
3731 /* ?_Addstd@ios_base@std@@SAXPEAV12@@Z */
3732 void CDECL ios_base_Addstd(ios_base *add)
3734 FIXME("(%p) stub\n", add);
3737 /* ?_Index_func@ios_base@std@@CAAAHXZ */
3738 /* ?_Index_func@ios_base@std@@CAAEAHXZ */
3739 int* CDECL ios_base_Index_func(void)
3741 TRACE("\n");
3742 return &ios_base_Index;
3745 /* ?_Init@ios_base@std@@IAEXXZ */
3746 /* ?_Init@ios_base@std@@IEAAXXZ */
3747 DEFINE_THISCALL_WRAPPER(ios_base_Init, 4)
3748 void __thiscall ios_base_Init(ios_base *this)
3750 TRACE("(%p)\n", this);
3752 this->stdstr = 0;
3753 this->state = this->except = IOSTATE_goodbit;
3754 this->fmtfl = FMTFLAG_skipws | FMTFLAG_dec;
3755 this->prec = 6;
3756 this->wide = 0;
3757 this->arr = NULL;
3758 this->calls = NULL;
3759 this->loc = MSVCRT_operator_new(sizeof(locale));
3760 locale_ctor(this->loc);
3763 /* ?_Sync_func@ios_base@std@@CAAA_NXZ */
3764 /* ?_Sync_func@ios_base@std@@CAAEA_NXZ */
3765 MSVCP_bool* CDECL ios_base_Sync_func(void)
3767 TRACE("\n");
3768 return &ios_base_Sync;
3771 /* ?bad@ios_base@std@@QBE_NXZ */
3772 /* ?bad@ios_base@std@@QEBA_NXZ */
3773 DEFINE_THISCALL_WRAPPER(ios_base_bad, 4)
3774 MSVCP_bool __thiscall ios_base_bad(const ios_base *this)
3776 TRACE("(%p)\n", this);
3777 return (this->state & IOSTATE_badbit) != 0;
3780 /* ?eof@ios_base@std@@QBE_NXZ */
3781 /* ?eof@ios_base@std@@QEBA_NXZ */
3782 DEFINE_THISCALL_WRAPPER(ios_base_eof, 4)
3783 MSVCP_bool __thiscall ios_base_eof(const ios_base *this)
3785 TRACE("(%p)\n", this);
3786 return (this->state & IOSTATE_eofbit) != 0;
3789 /* ?flags@ios_base@std@@QAEHH@Z */
3790 /* ?flags@ios_base@std@@QEAAHH@Z */
3791 DEFINE_THISCALL_WRAPPER(ios_base_flags_set, 8)
3792 IOSB_fmtflags __thiscall ios_base_flags_set(ios_base *this, IOSB_fmtflags flags)
3794 IOSB_fmtflags ret = this->fmtfl;
3796 TRACE("(%p %x)\n", this, flags);
3798 this->fmtfl = flags & FMTFLAG_mask;
3799 return ret;
3802 /* ?flags@ios_base@std@@QBEHXZ */
3803 /* ?flags@ios_base@std@@QEBAHXZ */
3804 DEFINE_THISCALL_WRAPPER(ios_base_flags_get, 4)
3805 IOSB_fmtflags __thiscall ios_base_flags_get(const ios_base *this)
3807 TRACE("(%p)\n", this);
3808 return this->fmtfl;
3811 /* ?getloc@ios_base@std@@QBE?AVlocale@2@XZ */
3812 /* ?getloc@ios_base@std@@QEBA?AVlocale@2@XZ */
3813 DEFINE_THISCALL_WRAPPER(ios_base_getloc, 8)
3814 locale* __thiscall ios_base_getloc(const ios_base *this, locale *ret)
3816 TRACE("(%p)\n", this);
3817 return locale_copy_ctor(ret, this->loc);
3820 /* ?good@ios_base@std@@QBE_NXZ */
3821 /* ?good@ios_base@std@@QEBA_NXZ */
3822 DEFINE_THISCALL_WRAPPER(ios_base_good, 4)
3823 MSVCP_bool __thiscall ios_base_good(const ios_base *this)
3825 TRACE("(%p)\n", this);
3826 return this->state == IOSTATE_goodbit;
3829 /* ?imbue@ios_base@std@@QAE?AVlocale@2@ABV32@@Z */
3830 /* ?imbue@ios_base@std@@QEAA?AVlocale@2@AEBV32@@Z */
3831 DEFINE_THISCALL_WRAPPER(ios_base_imbue, 12)
3832 locale* __thiscall ios_base_imbue(ios_base *this, locale *ret, const locale *loc)
3834 TRACE("(%p %p)\n", this, loc);
3835 *ret = *this->loc;
3836 locale_copy_ctor(this->loc, loc);
3837 return ret;
3840 /* ?precision@ios_base@std@@QAEHH@Z */
3841 /* ?precision@ios_base@std@@QEAA_J_J@Z */
3842 DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 8)
3843 streamsize __thiscall ios_base_precision_set(ios_base *this, streamsize precision)
3845 streamsize ret = this->prec;
3847 TRACE("(%p %ld)\n", this, precision);
3849 this->prec = precision;
3850 return ret;
3853 /* ?precision@ios_base@std@@QBEHXZ */
3854 /* ?precision@ios_base@std@@QEBA_JXZ */
3855 DEFINE_THISCALL_WRAPPER(ios_base_precision_get, 4)
3856 streamsize __thiscall ios_base_precision_get(const ios_base *this)
3858 TRACE("(%p)\n", this);
3859 return this->prec;
3862 /* ?rdstate@ios_base@std@@QBEHXZ */
3863 /* ?rdstate@ios_base@std@@QEBAHXZ */
3864 DEFINE_THISCALL_WRAPPER(ios_base_rdstate, 4)
3865 IOSB_iostate __thiscall ios_base_rdstate(const ios_base *this)
3867 TRACE("(%p)\n", this);
3868 return this->state;
3871 /* ?setf@ios_base@std@@QAEHHH@Z */
3872 /* ?setf@ios_base@std@@QEAAHHH@Z */
3873 DEFINE_THISCALL_WRAPPER(ios_base_setf_mask, 12)
3874 IOSB_fmtflags __thiscall ios_base_setf_mask(ios_base *this, IOSB_fmtflags flags, IOSB_fmtflags mask)
3876 IOSB_fmtflags ret = this->fmtfl;
3878 TRACE("(%p %x %x)\n", this, flags, mask);
3880 this->fmtfl = (this->fmtfl & (~mask)) | (flags & mask & FMTFLAG_mask);
3881 return ret;
3884 /* ?setf@ios_base@std@@QAEHH@Z */
3885 /* ?setf@ios_base@std@@QEAAHH@Z */
3886 DEFINE_THISCALL_WRAPPER(ios_base_setf, 8)
3887 IOSB_fmtflags __thiscall ios_base_setf(ios_base *this, IOSB_fmtflags flags)
3889 return ios_base_setf_mask(this, flags, ~0);
3892 /* ?setstate@ios_base@std@@QAEXH_N@Z */
3893 /* ?setstate@ios_base@std@@QEAAXH_N@Z */
3894 DEFINE_THISCALL_WRAPPER(ios_base_setstate_reraise, 12)
3895 void __thiscall ios_base_setstate_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise)
3897 TRACE("(%p %x %x)\n", this, state, reraise);
3899 if(state != IOSTATE_goodbit)
3900 ios_base_clear_reraise(this, this->state | state, reraise);
3903 /* ?setstate@ios_base@std@@QAEXH@Z */
3904 /* ?setstate@ios_base@std@@QEAAXH@Z */
3905 DEFINE_THISCALL_WRAPPER(ios_base_setstate, 8)
3906 void __thiscall ios_base_setstate(ios_base *this, IOSB_iostate state)
3908 ios_base_setstate_reraise(this, state, FALSE);
3911 /* ?setstate@ios_base@std@@QAEXI@Z */
3912 /* ?setstate@ios_base@std@@QEAAXI@Z */
3913 DEFINE_THISCALL_WRAPPER(ios_base_setstate_unsigned, 8)
3914 void __thiscall ios_base_setstate_unsigned(ios_base *this, unsigned int state)
3916 ios_base_setstate_reraise(this, (IOSB_iostate)state, FALSE);
3919 /* ?sync_with_stdio@ios_base@std@@SA_N_N@Z */
3920 MSVCP_bool CDECL ios_base_sync_with_stdio(MSVCP_bool sync)
3922 _Lockit lock;
3923 MSVCP_bool ret;
3925 TRACE("(%x)\n", sync);
3927 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
3928 ret = ios_base_Sync;
3929 ios_base_Sync = sync;
3930 _Lockit_dtor(&lock);
3931 return ret;
3934 /* ?unsetf@ios_base@std@@QAEXH@Z */
3935 /* ?unsetf@ios_base@std@@QEAAXH@Z */
3936 DEFINE_THISCALL_WRAPPER(ios_base_unsetf, 8)
3937 void __thiscall ios_base_unsetf(ios_base *this, IOSB_fmtflags flags)
3939 TRACE("(%p %x)\n", this, flags);
3940 this->fmtfl &= ~flags;
3943 /* ?width@ios_base@std@@QAEHH@Z */
3944 /* ?width@ios_base@std@@QEAA_J_J@Z */
3945 DEFINE_THISCALL_WRAPPER(ios_base_width_set, 8)
3946 streamsize __thiscall ios_base_width_set(ios_base *this, streamsize width)
3948 streamsize ret = this->wide;
3950 TRACE("(%p %ld)\n", this, width);
3952 this->wide = width;
3953 return ret;
3956 /* ?width@ios_base@std@@QBEHXZ */
3957 /* ?width@ios_base@std@@QEBA_JXZ */
3958 DEFINE_THISCALL_WRAPPER(ios_base_width_get, 4)
3959 streamsize __thiscall ios_base_width_get(ios_base *this)
3961 TRACE("(%p)\n", this);
3962 return this->wide;
3965 /* ?xalloc@ios_base@std@@SAHXZ */
3966 int CDECL ios_base_xalloc(void)
3968 _Lockit lock;
3969 int ret;
3971 TRACE("\n");
3973 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
3974 ret = ios_base_Index++;
3975 _Lockit_dtor(&lock);
3976 return ret;
3979 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ */
3980 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ */
3981 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor, 4)
3982 basic_ios_char* __thiscall basic_ios_char_ctor(basic_ios_char *this)
3984 TRACE("(%p)\n", this);
3986 ios_base_ctor(&this->base);
3987 this->base.vtable = &MSVCP_basic_ios_char_vtable;
3988 return this;
3991 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IAEXPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
3992 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
3993 DEFINE_THISCALL_WRAPPER(basic_ios_char_init, 12)
3994 void __thiscall basic_ios_char_init(basic_ios_char *this, basic_streambuf_char *streambuf, MSVCP_bool isstd)
3996 TRACE("(%p %p %x)\n", this, streambuf, isstd);
3997 ios_base_Init(&this->base);
3998 this->strbuf = streambuf;
3999 this->stream = NULL;
4000 this->fillch = ' ';
4002 if(!streambuf)
4003 ios_base_setstate(&this->base, IOSTATE_badbit);
4005 if(isstd)
4006 FIXME("standard streams not handled yet\n");
4009 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
4010 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
4011 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor_streambuf, 8)
4012 basic_ios_char* __thiscall basic_ios_char_ctor_streambuf(basic_ios_char *this, basic_streambuf_char *strbuf)
4014 TRACE("(%p %p)\n", this, strbuf);
4016 basic_ios_char_ctor(this);
4017 basic_ios_char_init(this, strbuf, FALSE);
4018 return this;
4021 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ */
4022 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ */
4023 DEFINE_THISCALL_WRAPPER(basic_ios_char_dtor, 4)
4024 void __thiscall basic_ios_char_dtor(basic_ios_char *this)
4026 TRACE("(%p)\n", this);
4027 ios_base_dtor(&this->base);
4030 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ios_char_vector_dtor, 8)
4031 basic_ios_char* __thiscall MSVCP_basic_ios_char_vector_dtor(basic_ios_char *this, unsigned int flags)
4033 TRACE("(%p %x)\n", this, flags);
4034 if(flags & 2) {
4035 /* we have an array, with the number of elements stored before the first object */
4036 int i, *ptr = (int *)this-1;
4038 for(i=*ptr-1; i>=0; i--)
4039 basic_ios_char_dtor(this+i);
4040 MSVCRT_operator_delete(ptr);
4041 } else {
4042 basic_ios_char_dtor(this);
4043 if(flags & 1)
4044 MSVCRT_operator_delete(this);
4047 return this;
4050 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
4051 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
4052 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear_reraise, 12)
4053 void __thiscall basic_ios_char_clear_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise)
4055 TRACE("(%p %x %x)\n", this, state, reraise);
4056 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
4059 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
4060 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
4061 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear, 8)
4062 void __thiscall basic_ios_char_clear(basic_ios_char *this, unsigned int state)
4064 basic_ios_char_clear_reraise(this, (IOSB_iostate)state, FALSE);
4067 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEAAV12@ABV12@@Z */
4068 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEBV12@@Z */
4069 DEFINE_THISCALL_WRAPPER(basic_ios_char_copyfmt, 8)
4070 basic_ios_char* __thiscall basic_ios_char_copyfmt(basic_ios_char *this, basic_ios_char *copy)
4072 TRACE("(%p %p)\n", this, copy);
4073 if(this == copy)
4074 return this;
4076 this->stream = copy->stream;
4077 this->fillch = copy->fillch;
4078 ios_base_copyfmt(&this->base, &copy->base);
4079 return this;
4082 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEDD@Z */
4083 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAADD@Z */
4084 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_set, 8)
4085 char __thiscall basic_ios_char_fill_set(basic_ios_char *this, char fill)
4087 char ret = this->fillch;
4089 TRACE("(%p %c)\n", this, fill);
4091 this->fillch = fill;
4092 return ret;
4095 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ */
4096 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ */
4097 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_get, 4)
4098 char __thiscall basic_ios_char_fill_get(basic_ios_char *this)
4100 TRACE("(%p)\n", this);
4101 return this->fillch;
4104 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
4105 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
4106 DEFINE_THISCALL_WRAPPER(basic_ios_char_imbue, 12)
4107 locale *__thiscall basic_ios_char_imbue(basic_ios_char *this, locale *ret, const locale *loc)
4109 TRACE("(%p %p %p)\n", this, ret, loc);
4111 if(this->strbuf) {
4112 basic_streambuf_char_pubimbue(this->strbuf, ret, loc);
4113 locale_dtor(ret);
4116 return ios_base_imbue(&this->base, ret, loc);
4119 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDDD@Z */
4120 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADDD@Z */
4121 DEFINE_THISCALL_WRAPPER(basic_ios_char_narrow, 12)
4122 char __thiscall basic_ios_char_narrow(basic_ios_char *this, char ch, char def)
4124 TRACE("(%p %c %c)\n", this, ch, def);
4125 return ctype_char_narrow_ch(ctype_char_use_facet(this->strbuf->loc), ch, def);
4128 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PAV32@@Z */
4129 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAV32@@Z */
4130 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_set, 8)
4131 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_set(basic_ios_char *this, basic_streambuf_char *streambuf)
4133 basic_streambuf_char *ret = this->strbuf;
4135 TRACE("(%p %p)\n", this, streambuf);
4137 this->strbuf = streambuf;
4138 basic_ios_char_clear(this, IOSTATE_goodbit);
4139 return ret;
4142 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
4143 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
4144 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_get, 4)
4145 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_get(const basic_ios_char *this)
4147 TRACE("(%p)\n", this);
4148 return this->strbuf;
4151 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
4152 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
4153 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate_reraise, 12)
4154 void __thiscall basic_ios_char_setstate_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise)
4156 TRACE("(%p %x %x)\n", this, state, reraise);
4158 if(state != IOSTATE_goodbit)
4159 basic_ios_char_clear_reraise(this, this->base.state | state, reraise);
4162 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
4163 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
4164 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate, 8)
4165 void __thiscall basic_ios_char_setstate(basic_ios_char *this, unsigned int state)
4167 basic_ios_char_setstate_reraise(this, (IOSB_iostate)state, FALSE);
4170 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@PAV32@@Z */
4171 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@PEAV32@@Z */
4172 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_set, 8)
4173 basic_ostream_char* __thiscall basic_ios_char_tie_set(basic_ios_char *this, basic_ostream_char *ostream)
4175 basic_ostream_char *ret = this->stream;
4177 TRACE("(%p %p)\n", this, ostream);
4179 this->stream = ostream;
4180 return ret;
4183 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
4184 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
4185 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_get, 4)
4186 basic_ostream_char* __thiscall basic_ios_char_tie_get(const basic_ios_char *this)
4188 TRACE("(%p)\n", this);
4189 return this->stream;
4192 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z */
4193 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z */
4194 DEFINE_THISCALL_WRAPPER(basic_ios_char_widen, 8)
4195 char __thiscall basic_ios_char_widen(basic_ios_char *this, char ch)
4197 TRACE("(%p %c)\n", this, ch);
4198 return ctype_char_widen_ch(ctype_char_use_facet(this->strbuf->loc), ch);
4202 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
4203 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
4204 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor, 4)
4205 basic_ios_wchar* __thiscall basic_ios_wchar_ctor(basic_ios_wchar *this)
4207 TRACE("(%p)\n", this);
4209 ios_base_ctor(&this->base);
4210 this->base.vtable = &MSVCP_basic_ios_wchar_vtable;
4211 return this;
4214 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IAE@XZ */
4215 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IEAA@XZ */
4216 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor, 4)
4217 basic_ios_wchar* __thiscall basic_ios_short_ctor(basic_ios_wchar *this)
4219 basic_ios_wchar_ctor(this);
4220 this->base.vtable = &MSVCP_basic_ios_short_vtable;
4221 return this;
4224 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
4225 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
4226 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IAEXPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
4227 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
4228 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_init, 12)
4229 void __thiscall basic_ios_wchar_init(basic_ios_wchar *this, basic_streambuf_wchar *streambuf, MSVCP_bool isstd)
4231 TRACE("(%p %p %x)\n", this, streambuf, isstd);
4232 ios_base_Init(&this->base);
4233 this->strbuf = streambuf;
4234 this->stream = NULL;
4235 this->fillch = ' ';
4237 if(!streambuf)
4238 ios_base_setstate(&this->base, IOSTATE_badbit);
4240 if(isstd)
4241 FIXME("standard streams not handled yet\n");
4244 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
4245 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
4246 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor_streambuf, 8)
4247 basic_ios_wchar* __thiscall basic_ios_wchar_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
4249 TRACE("(%p %p)\n", this, strbuf);
4251 basic_ios_wchar_ctor(this);
4252 basic_ios_wchar_init(this, strbuf, FALSE);
4253 return this;
4256 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
4257 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
4258 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor_streambuf, 8)
4259 basic_ios_wchar* __thiscall basic_ios_short_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
4261 basic_ios_wchar_ctor_streambuf(this, strbuf);
4262 this->base.vtable = &MSVCP_basic_ios_short_vtable;
4263 return this;
4266 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
4267 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
4268 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UAE@XZ */
4269 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UEAA@XZ */
4270 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_dtor, 4)
4271 void __thiscall basic_ios_wchar_dtor(basic_ios_wchar *this)
4273 TRACE("(%p)\n", this);
4274 ios_base_dtor(&this->base);
4277 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ios_wchar_vector_dtor, 8)
4278 basic_ios_wchar* __thiscall MSVCP_basic_ios_wchar_vector_dtor(basic_ios_wchar *this, unsigned int flags)
4280 TRACE("(%p %x)\n", this, flags);
4281 if(flags & 2) {
4282 /* we have an array, with the number of elements stored before the first object */
4283 int i, *ptr = (int *)this-1;
4285 for(i=*ptr-1; i>=0; i--)
4286 basic_ios_wchar_dtor(this+i);
4287 MSVCRT_operator_delete(ptr);
4288 } else {
4289 basic_ios_wchar_dtor(this);
4290 if(flags & 1)
4291 MSVCRT_operator_delete(this);
4294 return this;
4297 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ios_short_vector_dtor, 8)
4298 basic_ios_wchar* __thiscall MSVCP_basic_ios_short_vector_dtor(basic_ios_wchar *this, unsigned int flags)
4300 return MSVCP_basic_ios_wchar_vector_dtor(this, flags);
4303 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
4304 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
4305 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
4306 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
4307 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear_reraise, 12)
4308 void __thiscall basic_ios_wchar_clear_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise)
4310 TRACE("(%p %x %x)\n", this, state, reraise);
4311 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
4314 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
4315 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
4316 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
4317 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
4318 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear, 8)
4319 void __thiscall basic_ios_wchar_clear(basic_ios_wchar *this, unsigned int state)
4321 basic_ios_wchar_clear_reraise(this, (IOSB_iostate)state, FALSE);
4324 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEAAV12@ABV12@@Z */
4325 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEBV12@@Z */
4326 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEAAV12@ABV12@@Z */
4327 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEBV12@@Z */
4328 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_copyfmt, 8)
4329 basic_ios_wchar* __thiscall basic_ios_wchar_copyfmt(basic_ios_wchar *this, basic_ios_wchar *copy)
4331 TRACE("(%p %p)\n", this, copy);
4332 if(this == copy)
4333 return this;
4335 this->stream = copy->stream;
4336 this->fillch = copy->fillch;
4337 ios_base_copyfmt(&this->base, &copy->base);
4338 return this;
4341 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE_W_W@Z */
4342 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA_W_W@Z */
4343 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEGG@Z */
4344 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
4345 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_set, 8)
4346 wchar_t __thiscall basic_ios_wchar_fill_set(basic_ios_wchar *this, wchar_t fill)
4348 wchar_t ret = this->fillch;
4350 TRACE("(%p %c)\n", this, fill);
4352 this->fillch = fill;
4353 return ret;
4356 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WXZ */
4357 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WXZ */
4358 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGXZ */
4359 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGXZ */
4360 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_get, 4)
4361 wchar_t __thiscall basic_ios_wchar_fill_get(basic_ios_wchar *this)
4363 TRACE("(%p)\n", this);
4364 return this->fillch;
4367 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
4368 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
4369 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
4370 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
4371 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_imbue, 12)
4372 locale *__thiscall basic_ios_wchar_imbue(basic_ios_wchar *this, locale *ret, const locale *loc)
4374 TRACE("(%p %p %p)\n", this, ret, loc);
4376 if(this->strbuf)
4377 return basic_streambuf_wchar_pubimbue(this->strbuf, ret, loc);
4379 locale_copy_ctor(ret, loc);
4380 return ret;
4383 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBED_WD@Z */
4384 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAD_WD@Z */
4385 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEDGD@Z */
4386 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBADGD@Z */
4387 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_narrow, 12)
4388 char __thiscall basic_ios_wchar_narrow(basic_ios_wchar *this, wchar_t ch, char def)
4390 TRACE("(%p %c %c)\n", this, ch, def);
4391 return ctype_wchar_narrow_ch(ctype_wchar_use_facet(this->strbuf->loc), ch, def);
4394 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
4395 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
4396 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAV32@@Z */
4397 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAV32@@Z */
4398 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_set, 8)
4399 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_set(basic_ios_wchar *this, basic_streambuf_wchar *streambuf)
4401 basic_streambuf_wchar *ret = this->strbuf;
4403 TRACE("(%p %p)\n", this, streambuf);
4405 this->strbuf = streambuf;
4406 basic_ios_wchar_clear(this, IOSTATE_goodbit);
4407 return ret;
4410 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
4411 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
4412 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
4413 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
4414 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_get, 4)
4415 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_get(const basic_ios_wchar *this)
4417 TRACE("(%p)\n", this);
4418 return this->strbuf;
4421 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
4422 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
4423 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
4424 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
4425 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate_reraise, 12)
4426 void __thiscall basic_ios_wchar_setstate_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise)
4428 TRACE("(%p %x %x)\n", this, state, reraise);
4430 if(state != IOSTATE_goodbit)
4431 basic_ios_wchar_clear_reraise(this, this->base.state | state, reraise);
4434 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
4435 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
4436 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
4437 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
4438 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate, 8)
4439 void __thiscall basic_ios_wchar_setstate(basic_ios_wchar *this, IOSB_iostate state)
4441 basic_ios_wchar_setstate_reraise(this, state, FALSE);
4444 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
4445 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
4446 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@PAV32@@Z */
4447 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@PEAV32@@Z */
4448 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_set, 8)
4449 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_set(basic_ios_wchar *this, basic_ostream_wchar *ostream)
4451 basic_ostream_wchar *ret = this->stream;
4453 TRACE("(%p %p)\n", this, ostream);
4455 this->stream = ostream;
4456 return ret;
4459 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
4460 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
4461 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
4462 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
4463 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_get, 4)
4464 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_get(const basic_ios_wchar *this)
4466 TRACE("(%p)\n", this);
4467 return this->stream;
4470 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WD@Z */
4471 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WD@Z */
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_wchar_widen, 8)
4475 wchar_t __thiscall basic_ios_wchar_widen(basic_ios_wchar *this, char ch)
4477 TRACE("(%p %c)\n", this, ch);
4478 return ctype_wchar_widen_ch(ctype_wchar_use_facet(this->strbuf->loc), 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 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
4491 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
4492 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor, 16)
4493 basic_ostream_char* __thiscall basic_ostream_char_ctor(basic_ostream_char *this,
4494 basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
4496 basic_ios_char *base;
4498 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
4500 if(virt_init) {
4501 this->vbtable = basic_ostream_char_vbtable;
4502 base = basic_ostream_char_get_basic_ios(this);
4503 basic_ios_char_ctor(base);
4504 }else {
4505 base = basic_ostream_char_get_basic_ios(this);
4508 base->base.vtable = &MSVCP_basic_ostream_char_vtable;
4509 basic_ios_char_init(base, strbuf, isstd);
4510 return this;
4513 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
4514 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
4515 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor_uninitialized, 16)
4516 basic_ostream_char* __thiscall basic_ostream_char_ctor_uninitialized(basic_ostream_char *this,
4517 int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init)
4519 basic_ios_char *base;
4521 TRACE("(%p %d %x)\n", this, uninitialized, addstd);
4523 if(virt_init) {
4524 this->vbtable = basic_ostream_char_vbtable;
4525 base = basic_ostream_char_get_basic_ios(this);
4526 basic_ios_char_ctor(base);
4527 }else {
4528 base = basic_ostream_char_get_basic_ios(this);
4531 base->base.vtable = &MSVCP_basic_ostream_char_vtable;
4532 if(addstd)
4533 ios_base_Addstd(&base->base);
4534 return this;
4537 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
4538 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
4539 DEFINE_THISCALL_WRAPPER(basic_ostream_char_dtor, 4)
4540 void __thiscall basic_ostream_char_dtor(basic_ostream_char *this)
4542 /* don't destroy virtual base here */
4543 TRACE("(%p)\n", this);
4546 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
4547 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
4548 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vbase_dtor, 4)
4549 void __thiscall basic_ostream_char_vbase_dtor(basic_ostream_char *this)
4551 TRACE("(%p)\n", this);
4552 basic_ostream_char_dtor(this);
4553 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(this));
4556 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostream_char_vector_dtor, 8)
4557 basic_ostream_char* __thiscall MSVCP_basic_ostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
4559 basic_ostream_char *this = (basic_ostream_char *)((char*)base - basic_ostream_char_vbtable[1] + basic_ostream_char_vbtable[0]);
4561 TRACE("(%p %x)\n", this, flags);
4563 if(flags & 2) {
4564 /* we have an array, with the number of elements stored before the first object */
4565 int i, *ptr = (int *)this-1;
4567 for(i=*ptr-1; i>=0; i--)
4568 basic_ostream_char_vbase_dtor(this+i);
4569 MSVCRT_operator_delete(ptr);
4570 } else {
4571 basic_ostream_char_vbase_dtor(this);
4572 if(flags & 1)
4573 MSVCRT_operator_delete(this);
4576 return this;
4579 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
4580 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
4581 DEFINE_THISCALL_WRAPPER(basic_ostream_char_flush, 4)
4582 basic_ostream_char* __thiscall basic_ostream_char_flush(basic_ostream_char *this)
4584 /* this function is not matching C++ specification */
4585 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4587 TRACE("(%p)\n", this);
4589 if(basic_ios_char_rdbuf_get(base) && ios_base_good(&base->base)
4590 && basic_streambuf_char_pubsync(basic_ios_char_rdbuf_get(base))==-1)
4591 basic_ios_char_setstate(base, IOSTATE_badbit);
4592 return this;
4595 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
4596 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
4597 DEFINE_THISCALL_WRAPPER(basic_ostream_char__Osfx, 4)
4598 void __thiscall basic_ostream_char__Osfx(basic_ostream_char *this)
4600 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4602 TRACE("(%p)\n", this);
4604 if(base->base.fmtfl & FMTFLAG_unitbuf)
4605 basic_ostream_char_flush(this);
4608 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
4609 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
4610 DEFINE_THISCALL_WRAPPER(basic_ostream_char_osfx, 4)
4611 void __thiscall basic_ostream_char_osfx(basic_ostream_char *this)
4613 TRACE("(%p)\n", this);
4614 basic_ostream_char__Osfx(this);
4617 static BOOL basic_ostream_char_sentry_create(basic_ostream_char *ostr)
4619 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
4621 if(basic_ios_char_rdbuf_get(base))
4622 basic_streambuf_char__Lock(base->strbuf);
4624 if(ios_base_good(&base->base) && base->stream)
4625 basic_ostream_char_flush(base->stream);
4627 return ios_base_good(&base->base);
4630 static void basic_ostream_char_sentry_destroy(basic_ostream_char *ostr)
4632 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
4634 if(ios_base_good(&base->base) && !__uncaught_exception())
4635 basic_ostream_char_osfx(ostr);
4637 if(basic_ios_char_rdbuf_get(base))
4638 basic_streambuf_char__Unlock(base->strbuf);
4641 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE_NXZ */
4642 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA_NXZ */
4643 DEFINE_THISCALL_WRAPPER(basic_ostream_char_opfx, 4)
4644 MSVCP_bool __thiscall basic_ostream_char_opfx(basic_ostream_char *this)
4646 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4648 TRACE("(%p)\n", this);
4650 if(ios_base_good(&base->base) && base->stream)
4651 basic_ostream_char_flush(base->stream);
4652 return ios_base_good(&base->base);
4655 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
4656 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
4657 DEFINE_THISCALL_WRAPPER(basic_ostream_char_put, 8)
4658 basic_ostream_char* __thiscall basic_ostream_char_put(basic_ostream_char *this, char ch)
4660 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4662 TRACE("(%p %c)\n", this, ch);
4664 if(!basic_ostream_char_sentry_create(this)
4665 || basic_streambuf_char_sputc(base->strbuf, ch)==EOF) {
4666 basic_ostream_char_sentry_destroy(this);
4667 basic_ios_char_setstate(base, IOSTATE_badbit);
4668 return this;
4671 basic_ostream_char_sentry_destroy(this);
4672 return this;
4675 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
4676 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
4677 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 12)
4678 basic_ostream_char* __thiscall basic_ostream_char_seekp(basic_ostream_char *this, streamoff off, int way)
4680 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4682 TRACE("(%p %ld %d)\n", this, off, way);
4684 if(!ios_base_fail(&base->base)) {
4685 fpos_int seek;
4687 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
4688 &seek, off, way, OPENMODE_out);
4689 if(seek.off==0 && seek.pos==-1 && seek.state==0)
4690 basic_ios_char_setstate(base, IOSTATE_failbit);
4692 return this;
4695 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
4696 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
4697 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp_fpos, 28)
4698 basic_ostream_char* __thiscall basic_ostream_char_seekp_fpos(basic_ostream_char *this, fpos_int pos)
4700 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4702 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
4704 if(!ios_base_fail(&base->base)) {
4705 fpos_int seek;
4707 basic_streambuf_char_pubseekpos(basic_ios_char_rdbuf_get(base),
4708 &seek, pos, OPENMODE_out);
4709 if(seek.off==0 && seek.pos==-1 && seek.state==0)
4710 basic_ios_char_setstate(base, IOSTATE_failbit);
4712 return this;
4715 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
4716 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
4717 DEFINE_THISCALL_WRAPPER(basic_ostream_char_tellp, 8)
4718 fpos_int* __thiscall basic_ostream_char_tellp(basic_ostream_char *this, fpos_int *ret)
4720 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4722 TRACE("(%p)\n", this);
4724 if(!ios_base_fail(&base->base)) {
4725 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
4726 ret, 0, SEEKDIR_cur, OPENMODE_out);
4727 }else {
4728 ret->off = 0;
4729 ret->pos = -1;
4730 ret->state = 0;
4732 return ret;
4735 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@PBDH@Z */
4736 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEBD_J@Z */
4737 DEFINE_THISCALL_WRAPPER(basic_ostream_char_write, 12)
4738 basic_ostream_char* __thiscall basic_ostream_char_write(basic_ostream_char *this, const char *str, streamsize count)
4740 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4742 TRACE("(%p %s %ld)\n", this, debugstr_a(str), count);
4744 if(!basic_ostream_char_sentry_create(this)
4745 || basic_streambuf_char_sputn(base->strbuf, str, count)!=count) {
4746 basic_ostream_char_sentry_destroy(this);
4747 basic_ios_char_setstate(base, IOSTATE_badbit);
4748 return this;
4751 basic_ostream_char_sentry_destroy(this);
4752 return this;
4755 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@F@Z */
4756 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@F@Z */
4757 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_short, 8)
4758 basic_ostream_char* __thiscall basic_ostream_char_print_short(basic_ostream_char *this, short val)
4760 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4761 int state = IOSTATE_goodbit;
4763 TRACE("(%p %d)\n", this, val);
4765 if(basic_ostream_char_sentry_create(this)) {
4766 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4767 const num_put *numput = num_put_char_use_facet(strbuf->loc);
4768 ostreambuf_iterator_char dest = {0, strbuf};
4770 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base),
4771 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
4772 ? (LONG)((unsigned short)val) : (LONG)val);
4774 basic_ostream_char_sentry_destroy(this);
4776 basic_ios_char_setstate(base, state);
4777 return this;
4780 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@G@Z */
4781 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@G@Z */
4782 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ushort, 8)
4783 basic_ostream_char* __thiscall basic_ostream_char_print_ushort(basic_ostream_char *this, unsigned short val)
4785 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4786 int state = IOSTATE_goodbit;
4788 TRACE("(%p %u)\n", this, val);
4790 if(basic_ostream_char_sentry_create(this)) {
4791 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4792 const num_put *numput = num_put_char_use_facet(strbuf->loc);
4793 ostreambuf_iterator_char dest = {0, strbuf};
4795 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
4797 basic_ostream_char_sentry_destroy(this);
4799 basic_ios_char_setstate(base, state);
4800 return this;
4803 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z */
4804 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z */
4805 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@J@Z */
4806 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@J@Z */
4807 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int, 8)
4808 basic_ostream_char* __thiscall basic_ostream_char_print_int(basic_ostream_char *this, int val)
4810 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4811 int state = IOSTATE_goodbit;
4813 TRACE("(%p %d)\n", this, val);
4815 if(basic_ostream_char_sentry_create(this)) {
4816 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4817 const num_put *numput = num_put_char_use_facet(strbuf->loc);
4818 ostreambuf_iterator_char dest = {0, strbuf};
4820 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
4822 basic_ostream_char_sentry_destroy(this);
4824 basic_ios_char_setstate(base, state);
4825 return this;
4828 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@I@Z */
4829 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@I@Z */
4830 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@K@Z */
4831 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z */
4832 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint, 8)
4833 basic_ostream_char* __thiscall basic_ostream_char_print_uint(basic_ostream_char *this, unsigned int val)
4835 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4836 int state = IOSTATE_goodbit;
4838 TRACE("(%p %u)\n", this, val);
4840 if(basic_ostream_char_sentry_create(this)) {
4841 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4842 const num_put *numput = num_put_char_use_facet(strbuf->loc);
4843 ostreambuf_iterator_char dest = {0, strbuf};
4845 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
4847 basic_ostream_char_sentry_destroy(this);
4849 basic_ios_char_setstate(base, state);
4850 return this;
4853 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@M@Z */
4854 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@M@Z */
4855 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_float, 8)
4856 basic_ostream_char* __thiscall basic_ostream_char_print_float(basic_ostream_char *this, float val)
4858 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4859 int state = IOSTATE_goodbit;
4861 TRACE("(%p %f)\n", this, val);
4863 if(basic_ostream_char_sentry_create(this)) {
4864 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4865 const num_put *numput = num_put_char_use_facet(strbuf->loc);
4866 ostreambuf_iterator_char dest = {0, strbuf};
4868 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
4870 basic_ostream_char_sentry_destroy(this);
4872 basic_ios_char_setstate(base, state);
4873 return this;
4876 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@N@Z */
4877 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@N@Z */
4878 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_double, 12)
4879 basic_ostream_char* __thiscall basic_ostream_char_print_double(basic_ostream_char *this, double val)
4881 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4882 int state = IOSTATE_goodbit;
4884 TRACE("(%p %lf)\n", this, val);
4886 if(basic_ostream_char_sentry_create(this)) {
4887 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4888 const num_put *numput = num_put_char_use_facet(strbuf->loc);
4889 ostreambuf_iterator_char dest = {0, strbuf};
4891 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
4893 basic_ostream_char_sentry_destroy(this);
4895 basic_ios_char_setstate(base, state);
4896 return this;
4899 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@O@Z */
4900 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@O@Z */
4901 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ldouble, 12)
4902 basic_ostream_char* __thiscall basic_ostream_char_print_ldouble(basic_ostream_char *this, double val)
4904 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4905 int state = IOSTATE_goodbit;
4907 TRACE("(%p %lf)\n", this, val);
4909 if(basic_ostream_char_sentry_create(this)) {
4910 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4911 const num_put *numput = num_put_char_use_facet(strbuf->loc);
4912 ostreambuf_iterator_char dest = {0, strbuf};
4914 num_put_char_put_ldouble(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
4916 basic_ostream_char_sentry_destroy(this);
4918 basic_ios_char_setstate(base, state);
4919 return this;
4922 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
4923 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
4924 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_streambuf, 8)
4925 basic_ostream_char* __thiscall basic_ostream_char_print_streambuf(basic_ostream_char *this, basic_streambuf_char *val)
4927 FIXME("(%p %p) stub\n", this, val);
4928 return NULL;
4931 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PBX@Z */
4932 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEBX@Z */
4933 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ptr, 8)
4934 basic_ostream_char* __thiscall basic_ostream_char_print_ptr(basic_ostream_char *this, const void *val)
4936 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4937 int state = IOSTATE_goodbit;
4939 TRACE("(%p %p)\n", this, val);
4941 if(basic_ostream_char_sentry_create(this)) {
4942 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4943 const num_put *numput = num_put_char_use_facet(strbuf->loc);
4944 ostreambuf_iterator_char dest = {0, strbuf};
4946 num_put_char_put_ptr(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
4948 basic_ostream_char_sentry_destroy(this);
4950 basic_ios_char_setstate(base, state);
4951 return this;
4954 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_J@Z */
4955 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_J@Z */
4956 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int64, 12)
4957 basic_ostream_char* __thiscall basic_ostream_char_print_int64(basic_ostream_char *this, __int64 val)
4959 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4960 int state = IOSTATE_goodbit;
4962 TRACE("(%p)\n", this);
4964 if(basic_ostream_char_sentry_create(this)) {
4965 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4966 const num_put *numput = num_put_char_use_facet(strbuf->loc);
4967 ostreambuf_iterator_char dest = {0, strbuf};
4969 num_put_char_put_int64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
4971 basic_ostream_char_sentry_destroy(this);
4973 basic_ios_char_setstate(base, state);
4974 return this;
4977 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_K@Z */
4978 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z */
4979 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint64, 12)
4980 basic_ostream_char* __thiscall basic_ostream_char_print_uint64(basic_ostream_char *this, unsigned __int64 val)
4982 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
4983 int state = IOSTATE_goodbit;
4985 TRACE("(%p)\n", this);
4987 if(basic_ostream_char_sentry_create(this)) {
4988 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
4989 const num_put *numput = num_put_char_use_facet(strbuf->loc);
4990 ostreambuf_iterator_char dest = {0, strbuf};
4992 num_put_char_put_uint64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
4994 basic_ostream_char_sentry_destroy(this);
4996 basic_ios_char_setstate(base, state);
4997 return this;
5000 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_N@Z */
5001 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_N@Z */
5002 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_bool, 8)
5003 basic_ostream_char* __thiscall basic_ostream_char_print_bool(basic_ostream_char *this, MSVCP_bool val)
5005 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5006 int state = IOSTATE_goodbit;
5008 TRACE("(%p %x)\n", this, val);
5010 if(basic_ostream_char_sentry_create(this)) {
5011 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5012 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5013 ostreambuf_iterator_char dest = {0, strbuf};
5015 num_put_char_put_bool(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5017 basic_ostream_char_sentry_destroy(this);
5019 basic_ios_char_setstate(base, state);
5020 return this;
5023 /* ?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
5024 /* ?endl@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
5025 basic_ostream_char* __cdecl basic_ostream_char_endl(basic_ostream_char *ostr)
5027 TRACE("(%p)\n", ostr);
5029 basic_ostream_char_put(ostr, '\n');
5030 basic_ostream_char_flush(ostr);
5031 return ostr;
5034 /* $?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 */
5035 /* ??$?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 */
5036 basic_ostream_char* __cdecl basic_ostream_char_print_bstr(basic_ostream_char *ostr, const basic_string_char *str)
5038 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5039 IOSB_iostate state = IOSTATE_goodbit;
5041 TRACE("(%p %p)\n", ostr, str);
5043 if(basic_ostream_char_sentry_create(ostr)) {
5044 MSVCP_size_t len = MSVCP_basic_string_char_length(str);
5045 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
5047 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
5048 for(; pad!=0; pad--) {
5049 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5050 state = IOSTATE_badbit;
5051 break;
5056 if(state == IOSTATE_goodbit) {
5057 if(basic_streambuf_char_sputn(base->strbuf, MSVCP_basic_string_char_c_str(str), len) != len)
5058 state = IOSTATE_badbit;
5061 for(; pad!=0; pad--) {
5062 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5063 state = IOSTATE_badbit;
5064 break;
5068 base->base.wide = 0;
5069 }else {
5070 state = IOSTATE_badbit;
5072 basic_ostream_char_sentry_destroy(ostr);
5074 basic_ios_char_setstate(base, state);
5075 return ostr;
5078 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
5079 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
5080 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func, 8)
5081 basic_ostream_char* __thiscall basic_ostream_char_print_func(basic_ostream_char *this,
5082 basic_ostream_char* (__cdecl *pfunc)(basic_ostream_char*))
5084 TRACE("(%p %p)\n", this, pfunc);
5085 pfunc(this);
5086 return this;
5089 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
5090 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
5091 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_basic_ios, 8)
5092 basic_ostream_char* __thiscall basic_ostream_char_print_func_basic_ios(basic_ostream_char *this,
5093 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
5095 TRACE("(%p %p)\n", this, pfunc);
5096 pfunc(basic_ostream_char_get_basic_ios(this));
5097 return this;
5100 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
5101 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
5102 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_ios_base, 8)
5103 basic_ostream_char* __thiscall basic_ostream_char_print_func_ios_base(
5104 basic_ostream_char *this, ios_base* (__cdecl *pfunc)(ios_base*))
5106 TRACE("(%p %p)\n", this, pfunc);
5107 pfunc(&basic_ostream_char_get_basic_ios(this)->base);
5108 return this;
5111 /* Caution: basic_ostream uses virtual inheritance. */
5112 static inline basic_ios_wchar* basic_ostream_wchar_get_basic_ios(basic_ostream_wchar *this)
5114 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
5117 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
5118 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
5119 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_ctor, 16)
5120 basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor(basic_ostream_wchar *this,
5121 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
5123 basic_ios_wchar *base;
5125 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
5127 if(virt_init) {
5128 this->vbtable = basic_ostream_wchar_vbtable;
5129 base = basic_ostream_wchar_get_basic_ios(this);
5130 basic_ios_wchar_ctor(base);
5131 }else {
5132 base = basic_ostream_wchar_get_basic_ios(this);
5135 base->base.vtable = &MSVCP_basic_ostream_wchar_vtable;
5136 basic_ios_wchar_init(base, strbuf, isstd);
5137 return this;
5140 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
5141 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
5142 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_ctor_uninitialized, 16)
5143 basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor_uninitialized(basic_ostream_wchar *this,
5144 int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init)
5146 basic_ios_wchar *base;
5148 TRACE("(%p %d %x)\n", this, uninitialized, addstd);
5150 if(virt_init) {
5151 this->vbtable = basic_ostream_wchar_vbtable;
5152 base = basic_ostream_wchar_get_basic_ios(this);
5153 basic_ios_wchar_ctor(base);
5154 }else {
5155 base = basic_ostream_wchar_get_basic_ios(this);
5158 base->base.vtable = &MSVCP_basic_ostream_wchar_vtable;
5159 if(addstd)
5160 ios_base_Addstd(&base->base);
5161 return this;
5164 /* ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
5165 /* ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
5166 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_dtor, 4)
5167 void __thiscall basic_ostream_wchar_dtor(basic_ostream_wchar *this)
5169 /* don't destroy virtual base here */
5170 TRACE("(%p)\n", this);
5173 /* ??_D?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
5174 /* ??_D?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
5175 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_vbase_dtor, 4)
5176 void __thiscall basic_ostream_wchar_vbase_dtor(basic_ostream_wchar *this)
5178 TRACE("(%p)\n", this);
5179 basic_ostream_wchar_dtor(this);
5180 basic_ios_wchar_dtor(basic_ostream_wchar_get_basic_ios(this));
5183 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostream_wchar_vector_dtor, 8)
5184 basic_ostream_wchar* __thiscall MSVCP_basic_ostream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
5186 basic_ostream_wchar *this = (basic_ostream_wchar *)((char*)base - basic_ostream_wchar_vbtable[1] + basic_ostream_wchar_vbtable[0]);
5188 TRACE("(%p %x)\n", this, flags);
5190 if(flags & 2) {
5191 /* we have an array, with the number of elements stored before the first object */
5192 int i, *ptr = (int *)this-1;
5194 for(i=*ptr-1; i>=0; i--)
5195 basic_ostream_wchar_vbase_dtor(this+i);
5196 MSVCRT_operator_delete(ptr);
5197 } else {
5198 basic_ostream_wchar_vbase_dtor(this);
5199 if(flags & 1)
5200 MSVCRT_operator_delete(this);
5203 return this;
5206 /* ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */
5207 /* ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */
5208 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_flush, 4)
5209 basic_ostream_wchar* __thiscall basic_ostream_wchar_flush(basic_ostream_wchar *this)
5211 /* this function is not matching C++ specification */
5212 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5214 TRACE("(%p)\n", this);
5216 if(basic_ios_wchar_rdbuf_get(base) && ios_base_good(&base->base)
5217 && basic_streambuf_wchar_pubsync(basic_ios_wchar_rdbuf_get(base))==-1)
5218 basic_ios_wchar_setstate(base, IOSTATE_badbit);
5219 return this;
5222 /* ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
5223 /* ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
5224 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar__Osfx, 4)
5225 void __thiscall basic_ostream_wchar__Osfx(basic_ostream_wchar *this)
5227 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5229 TRACE("(%p)\n", this);
5231 if(base->base.fmtfl & FMTFLAG_unitbuf)
5232 basic_ostream_wchar_flush(this);
5235 /* ?osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
5236 /* ?osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
5237 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_osfx, 4)
5238 void __thiscall basic_ostream_wchar_osfx(basic_ostream_wchar *this)
5240 TRACE("(%p)\n", this);
5241 basic_ostream_wchar__Osfx(this);
5244 static BOOL basic_ostream_wchar_sentry_create(basic_ostream_wchar *ostr)
5246 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
5248 if(basic_ios_wchar_rdbuf_get(base))
5249 basic_streambuf_wchar__Lock(base->strbuf);
5251 if(ios_base_good(&base->base) && base->stream)
5252 basic_ostream_wchar_flush(base->stream);
5254 return ios_base_good(&base->base);
5257 static void basic_ostream_wchar_sentry_destroy(basic_ostream_wchar *ostr)
5259 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
5261 if(ios_base_good(&base->base) && !__uncaught_exception())
5262 basic_ostream_wchar_osfx(ostr);
5264 if(basic_ios_wchar_rdbuf_get(base))
5265 basic_streambuf_wchar__Unlock(base->strbuf);
5268 /* ?opfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE_NXZ */
5269 /* ?opfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA_NXZ */
5270 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_opfx, 4)
5271 MSVCP_bool __thiscall basic_ostream_wchar_opfx(basic_ostream_wchar *this)
5273 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5275 TRACE("(%p)\n", this);
5277 if(ios_base_good(&base->base) && base->stream)
5278 basic_ostream_wchar_flush(base->stream);
5279 return ios_base_good(&base->base);
5282 /* ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */
5283 /* ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */
5284 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_put, 8)
5285 basic_ostream_wchar* __thiscall basic_ostream_wchar_put(basic_ostream_wchar *this, wchar_t ch)
5287 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5289 TRACE("(%p %c)\n", this, ch);
5291 if(!basic_ostream_wchar_sentry_create(this)
5292 || basic_streambuf_wchar_sputc(base->strbuf, ch)==WEOF) {
5293 basic_ostream_wchar_sentry_destroy(this);
5294 basic_ios_wchar_setstate(base, IOSTATE_badbit);
5295 return this;
5298 basic_ostream_wchar_sentry_destroy(this);
5299 return this;
5302 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */
5303 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */
5304 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp, 12)
5305 basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp(basic_ostream_wchar *this, streamoff off, int way)
5307 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5309 TRACE("(%p %ld %d)\n", this, off, way);
5311 if(!ios_base_fail(&base->base)) {
5312 fpos_int seek;
5314 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
5315 &seek, off, way, OPENMODE_out);
5316 if(seek.off==0 && seek.pos==-1 && seek.state==0)
5317 basic_ios_wchar_setstate(base, IOSTATE_failbit);
5319 return this;
5322 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
5323 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
5324 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp_fpos, 28)
5325 basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp_fpos(basic_ostream_wchar *this, fpos_int pos)
5327 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5329 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
5331 if(!ios_base_fail(&base->base)) {
5332 fpos_int seek;
5334 basic_streambuf_wchar_pubseekpos(basic_ios_wchar_rdbuf_get(base),
5335 &seek, pos, OPENMODE_out);
5336 if(seek.off==0 && seek.pos==-1 && seek.state==0)
5337 basic_ios_wchar_setstate(base, IOSTATE_failbit);
5339 return this;
5342 /* ?tellp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */
5343 /* ?tellp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
5344 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_tellp, 8)
5345 fpos_int* __thiscall basic_ostream_wchar_tellp(basic_ostream_wchar *this, fpos_int *ret)
5347 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5349 TRACE("(%p)\n", this);
5351 if(!ios_base_fail(&base->base)) {
5352 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
5353 ret, 0, SEEKDIR_cur, OPENMODE_out);
5354 }else {
5355 ret->off = 0;
5356 ret->pos = -1;
5357 ret->state = 0;
5359 return ret;
5362 /* ?write@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PB_WH@Z */
5363 /* ?write@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEB_W_J@Z */
5364 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_write, 12)
5365 basic_ostream_wchar* __thiscall basic_ostream_wchar_write(basic_ostream_wchar *this, const wchar_t *str, streamsize count)
5367 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5369 TRACE("(%p %s %ld)\n", this, debugstr_w(str), count);
5371 if(!basic_ostream_wchar_sentry_create(this)
5372 || basic_streambuf_wchar_sputn(base->strbuf, str, count)!=count) {
5373 basic_ostream_wchar_sentry_destroy(this);
5374 basic_ios_wchar_setstate(base, IOSTATE_badbit);
5375 return this;
5378 basic_ostream_wchar_sentry_destroy(this);
5379 return this;
5382 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@F@Z */
5383 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@F@Z */
5384 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_short, 8)
5385 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_short(basic_ostream_wchar *this, short val)
5387 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5388 int state = IOSTATE_goodbit;
5390 TRACE("(%p %d)\n", this, val);
5392 if(basic_ostream_wchar_sentry_create(this)) {
5393 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
5394 const num_put *numput = num_put_wchar_use_facet(strbuf->loc);
5395 ostreambuf_iterator_wchar dest = {0, strbuf};
5397 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base),
5398 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
5399 ? (LONG)((unsigned short)val) : (LONG)val);
5401 basic_ostream_wchar_sentry_destroy(this);
5403 basic_ios_wchar_setstate(base, state);
5404 return this;
5407 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@G@Z */
5408 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@G@Z */
5409 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ushort, 8)
5410 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ushort(basic_ostream_wchar *this, unsigned short val)
5412 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5413 int state = IOSTATE_goodbit;
5415 TRACE("(%p %u)\n", this, val);
5417 if(basic_ostream_wchar_sentry_create(this)) {
5418 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
5419 const num_put *numput = num_put_wchar_use_facet(strbuf->loc);
5420 ostreambuf_iterator_wchar dest = {0, strbuf};
5422 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
5424 basic_ostream_wchar_sentry_destroy(this);
5426 basic_ios_wchar_setstate(base, state);
5427 return this;
5430 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@H@Z */
5431 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@H@Z */
5432 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@J@Z */
5433 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@J@Z */
5434 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int, 8)
5435 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int(basic_ostream_wchar *this, int val)
5437 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5438 int state = IOSTATE_goodbit;
5440 TRACE("(%p %d)\n", this, val);
5442 if(basic_ostream_wchar_sentry_create(this)) {
5443 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
5444 const num_put *numput = num_put_wchar_use_facet(strbuf->loc);
5445 ostreambuf_iterator_wchar dest = {0, strbuf};
5447 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
5449 basic_ostream_wchar_sentry_destroy(this);
5451 basic_ios_wchar_setstate(base, state);
5452 return this;
5455 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@I@Z */
5456 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@I@Z */
5457 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@K@Z */
5458 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@K@Z */
5459 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint, 8)
5460 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint(basic_ostream_wchar *this, unsigned int val)
5462 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5463 int state = IOSTATE_goodbit;
5465 TRACE("(%p %u)\n", this, val);
5467 if(basic_ostream_wchar_sentry_create(this)) {
5468 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
5469 const num_put *numput = num_put_wchar_use_facet(strbuf->loc);
5470 ostreambuf_iterator_wchar dest = {0, strbuf};
5472 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
5474 basic_ostream_wchar_sentry_destroy(this);
5476 basic_ios_wchar_setstate(base, state);
5477 return this;
5480 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@M@Z */
5481 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@M@Z */
5482 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_float, 8)
5483 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_float(basic_ostream_wchar *this, float val)
5485 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5486 int state = IOSTATE_goodbit;
5488 TRACE("(%p %f)\n", this, val);
5490 if(basic_ostream_wchar_sentry_create(this)) {
5491 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
5492 const num_put *numput = num_put_wchar_use_facet(strbuf->loc);
5493 ostreambuf_iterator_wchar dest = {0, strbuf};
5495 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
5497 basic_ostream_wchar_sentry_destroy(this);
5499 basic_ios_wchar_setstate(base, state);
5500 return this;
5503 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@N@Z */
5504 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@N@Z */
5505 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_double, 12)
5506 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_double(basic_ostream_wchar *this, double val)
5508 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5509 int state = IOSTATE_goodbit;
5511 TRACE("(%p %lf)\n", this, val);
5513 if(basic_ostream_wchar_sentry_create(this)) {
5514 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
5515 const num_put *numput = num_put_wchar_use_facet(strbuf->loc);
5516 ostreambuf_iterator_wchar dest = {0, strbuf};
5518 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
5520 basic_ostream_wchar_sentry_destroy(this);
5522 basic_ios_wchar_setstate(base, state);
5523 return this;
5526 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@O@Z */
5527 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@O@Z */
5528 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ldouble, 12)
5529 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ldouble(basic_ostream_wchar *this, double val)
5531 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5532 int state = IOSTATE_goodbit;
5534 TRACE("(%p %lf)\n", this, val);
5536 if(basic_ostream_wchar_sentry_create(this)) {
5537 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
5538 const num_put *numput = num_put_wchar_use_facet(strbuf->loc);
5539 ostreambuf_iterator_wchar dest = {0, strbuf};
5541 num_put_wchar_put_ldouble(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
5543 basic_ostream_wchar_sentry_destroy(this);
5545 basic_ios_wchar_setstate(base, state);
5546 return this;
5549 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
5550 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
5551 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_streambuf, 8)
5552 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_streambuf(basic_ostream_wchar *this, basic_streambuf_wchar *val)
5554 FIXME("(%p %p) stub\n", this, val);
5555 return NULL;
5558 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PBX@Z */
5559 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEBX@Z */
5560 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ptr, 8)
5561 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ptr(basic_ostream_wchar *this, const void *val)
5563 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5564 int state = IOSTATE_goodbit;
5566 TRACE("(%p %p)\n", this, val);
5568 if(basic_ostream_wchar_sentry_create(this)) {
5569 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
5570 const num_put *numput = num_put_wchar_use_facet(strbuf->loc);
5571 ostreambuf_iterator_wchar dest = {0, strbuf};
5573 num_put_wchar_put_ptr(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
5575 basic_ostream_wchar_sentry_destroy(this);
5577 basic_ios_wchar_setstate(base, state);
5578 return this;
5581 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_J@Z */
5582 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_J@Z */
5583 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int64, 12)
5584 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int64(basic_ostream_wchar *this, __int64 val)
5586 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5587 int state = IOSTATE_goodbit;
5589 TRACE("(%p)\n", this);
5591 if(basic_ostream_wchar_sentry_create(this)) {
5592 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
5593 const num_put *numput = num_put_wchar_use_facet(strbuf->loc);
5594 ostreambuf_iterator_wchar dest = {0, strbuf};
5596 num_put_wchar_put_int64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
5598 basic_ostream_wchar_sentry_destroy(this);
5600 basic_ios_wchar_setstate(base, state);
5601 return this;
5604 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_K@Z */
5605 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_K@Z */
5606 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint64, 12)
5607 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
5609 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5610 int state = IOSTATE_goodbit;
5612 TRACE("(%p)\n", this);
5614 if(basic_ostream_wchar_sentry_create(this)) {
5615 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
5616 const num_put *numput = num_put_wchar_use_facet(strbuf->loc);
5617 ostreambuf_iterator_wchar dest = {0, strbuf};
5619 num_put_wchar_put_uint64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
5621 basic_ostream_wchar_sentry_destroy(this);
5623 basic_ios_wchar_setstate(base, state);
5624 return this;
5627 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_N@Z */
5628 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_N@Z */
5629 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_bool, 8)
5630 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_bool(basic_ostream_wchar *this, MSVCP_bool val)
5632 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
5633 int state = IOSTATE_goodbit;
5635 TRACE("(%p %x)\n", this, val);
5637 if(basic_ostream_wchar_sentry_create(this)) {
5638 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
5639 const num_put *numput = num_put_wchar_use_facet(strbuf->loc);
5640 ostreambuf_iterator_wchar dest = {0, strbuf};
5642 num_put_wchar_put_bool(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
5644 basic_ostream_wchar_sentry_destroy(this);
5646 basic_ios_wchar_setstate(base, state);
5647 return this;
5650 /* ?endl@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
5651 /* ?endl@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
5652 basic_ostream_wchar* __cdecl basic_ostream_wchar_endl(basic_ostream_wchar *ostr)
5654 TRACE("(%p)\n", ostr);
5656 basic_ostream_wchar_put(ostr, '\n');
5657 basic_ostream_wchar_flush(ostr);
5658 return ostr;
5661 /* ??$?6_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@ABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
5662 /* ??$?6_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@AEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
5663 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_bstr(basic_ostream_wchar *ostr, const basic_string_wchar *str)
5665 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
5666 IOSB_iostate state = IOSTATE_goodbit;
5668 TRACE("(%p %p)\n", ostr, str);
5670 if(basic_ostream_wchar_sentry_create(ostr)) {
5671 MSVCP_size_t len = MSVCP_basic_string_wchar_length(str);
5672 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
5674 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
5675 for(; pad!=0; pad--) {
5676 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
5677 state = IOSTATE_badbit;
5678 break;
5683 if(state == IOSTATE_goodbit) {
5684 if(basic_streambuf_wchar_sputn(base->strbuf, MSVCP_basic_string_wchar_c_str(str), len) != len)
5685 state = IOSTATE_badbit;
5688 for(; pad!=0; pad--) {
5689 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
5690 state = IOSTATE_badbit;
5691 break;
5695 base->base.wide = 0;
5696 }else {
5697 state = IOSTATE_badbit;
5699 basic_ostream_wchar_sentry_destroy(ostr);
5701 basic_ios_wchar_setstate(base, state);
5702 return ostr;
5705 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
5706 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
5707 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func, 8)
5708 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func(basic_ostream_wchar *this,
5709 basic_ostream_wchar* (__cdecl *pfunc)(basic_ostream_wchar*))
5711 TRACE("(%p %p)\n", this, pfunc);
5712 pfunc(this);
5713 return this;
5716 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AAV21@@Z@Z */
5717 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AEAV21@@Z@Z */
5718 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func_basic_ios, 8)
5719 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func_basic_ios(basic_ostream_wchar *this,
5720 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
5722 TRACE("(%p %p)\n", this, pfunc);
5723 pfunc(basic_ostream_wchar_get_basic_ios(this));
5724 return this;
5727 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
5728 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
5729 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func_ios_base, 8)
5730 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func_ios_base(
5731 basic_ostream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
5733 TRACE("(%p %p)\n", this, pfunc);
5734 pfunc(&basic_ostream_wchar_get_basic_ios(this)->base);
5735 return this;
5738 /* Caution: basic_istream uses virtual inheritance. */
5739 static inline basic_ios_char* basic_istream_char_get_basic_ios(basic_istream_char *this)
5741 return (basic_ios_char*)((char*)this+this->vbtable[1]);
5744 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
5745 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
5746 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_init, 20)
5747 basic_istream_char* __thiscall basic_istream_char_ctor_init(basic_istream_char *this, basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool noinit, MSVCP_bool virt_init)
5749 basic_ios_char *base;
5751 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
5753 if(virt_init) {
5754 this->vbtable = basic_istream_char_vbtable;
5755 base = basic_istream_char_get_basic_ios(this);
5756 basic_ios_char_ctor(base);
5757 }else {
5758 base = basic_istream_char_get_basic_ios(this);
5761 base->base.vtable = &MSVCP_basic_istream_char_vtable;
5762 this->count = 0;
5763 if(!noinit)
5764 basic_ios_char_init(base, strbuf, isstd);
5765 return this;
5768 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
5769 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
5770 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor, 16)
5771 basic_istream_char* __thiscall basic_istream_char_ctor(basic_istream_char *this, basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
5773 return basic_istream_char_ctor_init(this, strbuf, isstd, FALSE, virt_init);
5776 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
5777 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
5778 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_uninitialized, 12)
5779 basic_istream_char* __thiscall basic_istream_char_ctor_uninitialized(basic_istream_char *this, int uninitialized, MSVCP_bool virt_init)
5781 basic_ios_char *base;
5783 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
5785 if(virt_init) {
5786 this->vbtable = basic_istream_char_vbtable;
5787 base = basic_istream_char_get_basic_ios(this);
5788 basic_ios_char_ctor(base);
5789 }else {
5790 base = basic_istream_char_get_basic_ios(this);
5793 base->base.vtable = &MSVCP_basic_istream_char_vtable;
5794 ios_base_Addstd(&base->base);
5795 return this;
5798 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UAE@XZ */
5799 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
5800 DEFINE_THISCALL_WRAPPER(basic_istream_char_dtor, 4)
5801 void __thiscall basic_istream_char_dtor(basic_istream_char *this)
5803 /* don't destroy virtual base here */
5804 TRACE("(%p)\n", this);
5807 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
5808 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
5809 DEFINE_THISCALL_WRAPPER(basic_istream_char_vbase_dtor, 4)
5810 void __thiscall basic_istream_char_vbase_dtor(basic_istream_char *this)
5812 TRACE("(%p)\n", this);
5813 basic_istream_char_dtor(this);
5814 basic_ios_char_dtor(basic_istream_char_get_basic_ios(this));
5817 DEFINE_THISCALL_WRAPPER(MSVCP_basic_istream_char_vector_dtor, 8)
5818 basic_istream_char* __thiscall MSVCP_basic_istream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
5820 basic_istream_char *this = (basic_istream_char *)((char*)base - basic_istream_char_vbtable[1] + basic_istream_char_vbtable[0]);
5822 TRACE("(%p %x)\n", this, flags);
5824 if(flags & 2) {
5825 /* we have an array, with the number of elements stored before the first object */
5826 int i, *ptr = (int *)this-1;
5828 for(i=*ptr-1; i>=0; i--)
5829 basic_istream_char_vbase_dtor(this+i);
5830 MSVCRT_operator_delete(ptr);
5831 } else {
5832 basic_istream_char_vbase_dtor(this);
5833 if(flags & 1)
5834 MSVCRT_operator_delete(this);
5837 return this;
5840 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
5841 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
5842 DEFINE_THISCALL_WRAPPER(basic_istream_char__Ipfx, 8)
5843 MSVCP_bool __thiscall basic_istream_char__Ipfx(basic_istream_char *this, MSVCP_bool noskip)
5845 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
5847 TRACE("(%p %d)\n", this, noskip);
5849 if(!ios_base_good(&base->base)) {
5850 basic_ios_char_setstate(base, IOSTATE_failbit);
5851 return FALSE;
5854 if(basic_ios_char_tie_get(base))
5855 basic_ostream_char_flush(basic_ios_char_tie_get(base));
5857 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
5858 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5859 const ctype_char *ctype = ctype_char_use_facet(base->strbuf->loc);
5860 int ch;
5862 for(ch = basic_streambuf_char_sgetc(strbuf); ;
5863 ch = basic_streambuf_char_snextc(strbuf)) {
5864 if(ch == EOF) {
5865 basic_ios_char_setstate(base, IOSTATE_eofbit);
5866 return FALSE;
5869 if(!ctype_char_is_ch(ctype, _SPACE|_BLANK, ch))
5870 break;
5874 return TRUE;
5877 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
5878 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
5879 DEFINE_THISCALL_WRAPPER(basic_istream_char_ipfx, 8)
5880 MSVCP_bool __thiscall basic_istream_char_ipfx(basic_istream_char *this, MSVCP_bool noskip)
5882 return basic_istream_char__Ipfx(this, noskip);
5885 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
5886 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
5887 DEFINE_THISCALL_WRAPPER(basic_istream_char_isfx, 4)
5888 void __thiscall basic_istream_char_isfx(basic_istream_char *this)
5890 TRACE("(%p)\n", this);
5893 static BOOL basic_istream_char_sentry_create(basic_istream_char *istr, MSVCP_bool noskip)
5895 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
5897 if(basic_ios_char_rdbuf_get(base))
5898 basic_streambuf_char__Lock(base->strbuf);
5900 return basic_istream_char_ipfx(istr, noskip);
5903 static void basic_istream_char_sentry_destroy(basic_istream_char *istr)
5905 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
5907 if(basic_ios_char_rdbuf_get(base))
5908 basic_streambuf_char__Unlock(base->strbuf);
5911 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBEHXZ */
5912 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QEBA_JXZ */
5913 DEFINE_THISCALL_WRAPPER(basic_istream_char_gcount, 4)
5914 int __thiscall basic_istream_char_gcount(const basic_istream_char *this)
5916 TRACE("(%p)\n", this);
5917 return this->count;
5920 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
5921 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
5922 DEFINE_THISCALL_WRAPPER(basic_istream_char_get, 4)
5923 int __thiscall basic_istream_char_get(basic_istream_char *this)
5925 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
5926 int ret;
5928 TRACE("(%p)\n", this);
5930 this->count = 0;
5932 if(!basic_istream_char_sentry_create(this, TRUE)) {
5933 basic_istream_char_sentry_destroy(this);
5934 return EOF;
5937 ret = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(base));
5938 basic_istream_char_sentry_destroy(this);
5939 if(ret == EOF)
5940 basic_ios_char_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
5941 else
5942 this->count++;
5944 return ret;
5947 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAD@Z */
5948 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAD@Z */
5949 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_ch, 8)
5950 basic_istream_char* __thiscall basic_istream_char_get_ch(basic_istream_char *this, char *ch)
5952 int ret;
5954 TRACE("(%p %p)\n", this, ch);
5956 ret = basic_istream_char_get(this);
5957 if(ret != EOF)
5958 *ch = (char)ret;
5959 return this;
5962 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
5963 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
5964 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str_delim, 16)
5965 basic_istream_char* __thiscall basic_istream_char_get_str_delim(basic_istream_char *this, char *str, streamsize count, char delim)
5967 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
5968 int ch = delim;
5970 TRACE("(%p %p %ld %c)\n", this, str, count, delim);
5972 this->count = 0;
5974 if(basic_istream_char_sentry_create(this, TRUE)) {
5975 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5977 for(ch = basic_streambuf_char_sgetc(strbuf); count>1;
5978 ch = basic_streambuf_char_snextc(strbuf)) {
5979 if(ch==EOF || ch==delim)
5980 break;
5982 *str++ = ch;
5983 this->count++;
5984 count--;
5987 basic_istream_char_sentry_destroy(this);
5989 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
5990 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
5991 if(count > 0)
5992 *str = 0;
5993 return this;
5996 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
5997 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
5998 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str, 12)
5999 basic_istream_char* __thiscall basic_istream_char_get_str(basic_istream_char *this, char *str, streamsize count)
6001 return basic_istream_char_get_str_delim(this, str, count, '\n');
6004 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
6005 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
6006 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf_delim, 12)
6007 basic_istream_char* __thiscall basic_istream_char_get_streambuf_delim(basic_istream_char *this, basic_streambuf_char *strbuf, char delim)
6009 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6010 int ch = delim;
6012 TRACE("(%p %p %c)\n", this, strbuf, delim);
6014 this->count = 0;
6016 if(basic_istream_char_sentry_create(this, TRUE)) {
6017 basic_streambuf_char *strbuf_read = basic_ios_char_rdbuf_get(base);
6019 for(ch = basic_streambuf_char_sgetc(strbuf_read); ;
6020 ch = basic_streambuf_char_snextc(strbuf_read)) {
6021 if(ch==EOF || ch==delim)
6022 break;
6024 if(basic_streambuf_char_sputc(strbuf, ch) == EOF)
6025 break;
6026 this->count++;
6029 basic_istream_char_sentry_destroy(this);
6031 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
6032 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
6033 return this;
6036 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
6037 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
6038 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf, 8)
6039 basic_istream_char* __thiscall basic_istream_char_get_streambuf(basic_istream_char *this, basic_streambuf_char *strbuf)
6041 return basic_istream_char_get_streambuf_delim(this, strbuf, '\n');
6044 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
6045 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
6046 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline_delim, 16)
6047 basic_istream_char* __thiscall basic_istream_char_getline_delim(basic_istream_char *this, char *str, streamsize count, char delim)
6049 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6050 int ch = delim;
6052 TRACE("(%p %p %ld %c)\n", this, str, count, delim);
6054 this->count = 0;
6056 if(basic_istream_char_sentry_create(this, TRUE) && count>0) {
6057 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6059 while(count > 1) {
6060 ch = basic_streambuf_char_sbumpc(strbuf);
6062 if(ch==EOF || ch==delim)
6063 break;
6065 *str++ = ch;
6066 this->count++;
6067 count--;
6070 if(ch == delim)
6071 this->count++;
6072 else if(ch != EOF) {
6073 ch = basic_streambuf_char_sgetc(strbuf);
6075 if(ch == delim) {
6076 basic_streambuf_char__Gninc(strbuf);
6077 this->count++;
6081 basic_istream_char_sentry_destroy(this);
6083 basic_ios_char_setstate(base, (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
6084 (!this->count || (ch!=delim && ch!=EOF) ? IOSTATE_failbit : IOSTATE_goodbit));
6085 if(count > 0)
6086 *str = 0;
6087 return this;
6090 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
6091 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
6092 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline, 12)
6093 basic_istream_char* __thiscall basic_istream_char_getline(basic_istream_char *this, char *str, streamsize count)
6095 return basic_istream_char_getline_delim(this, str, count, '\n');
6098 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@HH@Z */
6099 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
6100 DEFINE_THISCALL_WRAPPER(basic_istream_char_ignore, 12)
6101 basic_istream_char* __thiscall basic_istream_char_ignore(basic_istream_char *this, streamsize count, int delim)
6103 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6104 int ch = delim;
6106 TRACE("(%p %ld %d)\n", this, count, delim);
6108 this->count = 0;
6110 if(basic_istream_char_sentry_create(this, TRUE)) {
6111 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6113 while(count > 0) {
6114 ch = basic_streambuf_char_sbumpc(strbuf);
6116 if(ch==EOF || ch==delim)
6117 break;
6119 this->count++;
6120 if(count != INT_MAX)
6121 count--;
6124 basic_istream_char_sentry_destroy(this);
6126 if(ch == EOF)
6127 basic_ios_char_setstate(base, IOSTATE_eofbit);
6128 return this;
6131 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
6132 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
6133 DEFINE_THISCALL_WRAPPER(basic_istream_char_peek, 4)
6134 int __thiscall basic_istream_char_peek(basic_istream_char *this)
6136 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6137 int ret = EOF;
6139 TRACE("(%p)\n", this);
6141 this->count = 0;
6143 if(basic_istream_char_sentry_create(this, TRUE))
6144 ret = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
6145 basic_istream_char_sentry_destroy(this);
6146 return ret;
6149 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADIH@Z */
6150 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_K_J@Z */
6151 DEFINE_THISCALL_WRAPPER(basic_istream_char__Read_s, 16)
6152 basic_istream_char* __thiscall basic_istream_char__Read_s(basic_istream_char *this, char *str, MSVCP_size_t size, streamsize count)
6154 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6155 IOSB_iostate state = IOSTATE_goodbit;
6157 TRACE("(%p %p %lu %ld)\n", this, str, size, count);
6159 if(basic_istream_char_sentry_create(this, TRUE)) {
6160 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6162 this->count = basic_streambuf_char__Sgetn_s(strbuf, str, size, count);
6163 if(this->count != count)
6164 state |= IOSTATE_failbit | IOSTATE_eofbit;
6165 }else {
6166 this->count = 0;
6168 basic_istream_char_sentry_destroy(this);
6170 basic_ios_char_setstate(base, state);
6171 return this;
6174 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
6175 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
6176 DEFINE_THISCALL_WRAPPER(basic_istream_char_read, 12)
6177 basic_istream_char* __thiscall basic_istream_char_read(basic_istream_char *this, char *str, streamsize count)
6179 return basic_istream_char__Read_s(this, str, count, count);
6182 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
6183 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
6184 DEFINE_THISCALL_WRAPPER(basic_istream_char__Readsome_s, 16)
6185 streamsize __thiscall basic_istream_char__Readsome_s(basic_istream_char *this, char *str, MSVCP_size_t size, streamsize count)
6187 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6188 IOSB_iostate state = IOSTATE_goodbit;
6190 TRACE("(%p %p %lu %ld)\n", this, str, size, count);
6192 this->count = 0;
6194 if(basic_istream_char_sentry_create(this, TRUE)) {
6195 streamsize avail = basic_streambuf_char_in_avail(basic_ios_char_rdbuf_get(base));
6196 if(avail > count)
6197 avail = count;
6199 if(avail == -1)
6200 state |= IOSTATE_eofbit;
6201 else if(avail > 0)
6202 basic_istream_char__Read_s(this, str, size, avail);
6203 }else {
6204 state |= IOSTATE_failbit;
6206 basic_istream_char_sentry_destroy(this);
6208 basic_ios_char_setstate(base, state);
6209 return this->count;
6212 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
6213 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
6214 DEFINE_THISCALL_WRAPPER(basic_istream_char_readsome, 12)
6215 streamsize __thiscall basic_istream_char_readsome(basic_istream_char *this, char *str, streamsize count)
6217 return basic_istream_char__Readsome_s(this, str, count, count);
6220 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
6221 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
6222 DEFINE_THISCALL_WRAPPER(basic_istream_char_putback, 8)
6223 basic_istream_char* __thiscall basic_istream_char_putback(basic_istream_char *this, char ch)
6225 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6226 IOSB_iostate state = IOSTATE_goodbit;
6228 TRACE("(%p %c)\n", this, ch);
6230 this->count = 0;
6232 if(basic_istream_char_sentry_create(this, TRUE)) {
6233 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6235 if(!ios_base_good(&base->base))
6236 state |= IOSTATE_failbit;
6237 else if(!strbuf || basic_streambuf_char_sputbackc(strbuf, ch)==EOF)
6238 state |= IOSTATE_badbit;
6240 basic_istream_char_sentry_destroy(this);
6242 basic_ios_char_setstate(base, state);
6243 return this;
6246 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
6247 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
6248 DEFINE_THISCALL_WRAPPER(basic_istream_char_unget, 4)
6249 basic_istream_char* __thiscall basic_istream_char_unget(basic_istream_char *this)
6251 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6252 IOSB_iostate state = IOSTATE_goodbit;
6254 TRACE("(%p)\n", this);
6256 this->count = 0;
6258 if(basic_istream_char_sentry_create(this, TRUE)) {
6259 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6261 if(!ios_base_good(&base->base))
6262 state |= IOSTATE_failbit;
6263 else if(!strbuf || basic_streambuf_char_sungetc(strbuf)==EOF)
6264 state |= IOSTATE_badbit;
6266 basic_istream_char_sentry_destroy(this);
6268 basic_ios_char_setstate(base, state);
6269 return this;
6272 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
6273 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
6274 DEFINE_THISCALL_WRAPPER(basic_istream_char_sync, 4)
6275 int __thiscall basic_istream_char_sync(basic_istream_char *this)
6277 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6278 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6280 TRACE("(%p)\n", this);
6282 if(!strbuf)
6283 return -1;
6285 if(basic_istream_char_sentry_create(this, TRUE)) {
6286 if(basic_streambuf_char_pubsync(strbuf) != -1) {
6287 basic_istream_char_sentry_destroy(this);
6288 return 0;
6291 basic_istream_char_sentry_destroy(this);
6293 basic_ios_char_setstate(base, IOSTATE_badbit);
6294 return -1;
6297 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
6298 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
6299 DEFINE_THISCALL_WRAPPER(basic_istream_char_tellg, 8)
6300 fpos_int* __thiscall basic_istream_char_tellg(basic_istream_char *this, fpos_int *ret)
6302 TRACE("(%p %p)\n", this, ret);
6304 if(basic_istream_char_sentry_create(this, TRUE)) {
6305 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6306 if(!ios_base_fail(&base->base)) {
6307 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
6308 ret, 0, SEEKDIR_cur, OPENMODE_in);
6309 basic_istream_char_sentry_destroy(this);
6311 if(ret->off==0 && ret->pos==-1 && ret->state==0)
6312 basic_ios_char_setstate(base, IOSTATE_failbit);
6313 return ret;
6316 basic_istream_char_sentry_destroy(this);
6318 ret->off = 0;
6319 ret->pos = -1;
6320 ret->state = 0;
6321 return ret;
6324 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
6325 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
6326 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg, 12)
6327 basic_istream_char* __thiscall basic_istream_char_seekg(basic_istream_char *this, streamoff off, int dir)
6329 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6331 TRACE("(%p %ld %d)\n", this, off, dir);
6333 if(basic_istream_char_sentry_create(this, TRUE)) {
6334 if(!ios_base_fail(&base->base)) {
6335 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6336 fpos_int ret;
6338 basic_streambuf_char_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
6339 basic_istream_char_sentry_destroy(this);
6341 if(ret.off==0 && ret.pos==-1 && ret.state==0)
6342 basic_ios_char_setstate(base, IOSTATE_failbit);
6343 else
6344 basic_ios_char_clear(base, IOSTATE_goodbit);
6345 return this;
6348 basic_istream_char_sentry_destroy(this);
6350 basic_ios_char_setstate(base, IOSTATE_failbit);
6351 return this;
6354 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
6355 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
6356 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg_fpos, 28)
6357 basic_istream_char* __thiscall basic_istream_char_seekg_fpos(basic_istream_char *this, fpos_int pos)
6359 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6361 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
6363 if(basic_istream_char_sentry_create(this, TRUE)) {
6364 if(!ios_base_fail(&base->base)) {
6365 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6366 fpos_int ret;
6368 basic_streambuf_char_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
6369 basic_istream_char_sentry_destroy(this);
6371 if(ret.off==0 && ret.pos==-1 && ret.state==0)
6372 basic_ios_char_setstate(base, IOSTATE_failbit);
6373 else
6374 basic_ios_char_clear(base, IOSTATE_goodbit);
6375 return this;
6378 basic_istream_char_sentry_destroy(this);
6380 basic_ios_char_setstate(base, IOSTATE_failbit);
6381 return this;
6384 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAF@Z */
6385 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAF@Z */
6386 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_short, 8)
6387 basic_istream_char* __thiscall basic_istream_char_read_short(basic_istream_char *this, short *v)
6389 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6390 int state = IOSTATE_goodbit;
6392 TRACE("(%p %p)\n", this, v);
6394 if(basic_istream_char_sentry_create(this, FALSE)) {
6395 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6396 const num_get *numget = num_get_char_use_facet(strbuf->loc);
6397 istreambuf_iterator_char first={0}, last={0};
6398 LONG tmp;
6400 first.strbuf = strbuf;
6401 num_get_char_get_long(numget, &last, first, last, &base->base, &state, &tmp);
6403 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
6404 *v = tmp;
6405 else
6406 state |= IOSTATE_failbit;
6408 basic_istream_char_sentry_destroy(this);
6410 basic_ios_char_setstate(base, state);
6411 return this;
6414 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAG@Z */
6415 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAG@Z */
6416 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ushort, 8)
6417 basic_istream_char* __thiscall basic_istream_char_read_ushort(basic_istream_char *this, unsigned short *v)
6419 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6420 int state = IOSTATE_goodbit;
6422 TRACE("(%p %p)\n", this, v);
6424 if(basic_istream_char_sentry_create(this, FALSE)) {
6425 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6426 const num_get *numget = num_get_char_use_facet(strbuf->loc);
6427 istreambuf_iterator_char first={0}, last={0};
6429 first.strbuf = strbuf;
6430 num_get_char_get_ushort(numget, &last, first, last, &base->base, &state, v);
6432 basic_istream_char_sentry_destroy(this);
6434 basic_ios_char_setstate(base, state);
6435 return this;
6438 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAH@Z */
6439 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAH@Z */
6440 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int, 8)
6441 basic_istream_char* __thiscall basic_istream_char_read_int(basic_istream_char *this, int *v)
6443 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6444 int state = IOSTATE_goodbit;
6446 TRACE("(%p %p)\n", this, v);
6448 if(basic_istream_char_sentry_create(this, FALSE)) {
6449 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6450 const num_get *numget = num_get_char_use_facet(strbuf->loc);
6451 istreambuf_iterator_char first={0}, last={0};
6453 first.strbuf = strbuf;
6454 num_get_char_get_long(numget, &last, first, last, &base->base, &state, v);
6456 basic_istream_char_sentry_destroy(this);
6458 basic_ios_char_setstate(base, state);
6459 return this;
6462 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAI@Z */
6463 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAI@Z */
6464 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint, 8)
6465 basic_istream_char* __thiscall basic_istream_char_read_uint(basic_istream_char *this, unsigned int *v)
6467 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6468 int state = IOSTATE_goodbit;
6470 TRACE("(%p %p)\n", this, v);
6472 if(basic_istream_char_sentry_create(this, FALSE)) {
6473 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6474 const num_get *numget = num_get_char_use_facet(strbuf->loc);
6475 istreambuf_iterator_char first={0}, last={0};
6477 first.strbuf = strbuf;
6478 num_get_char_get_uint(numget, &last, first, last, &base->base, &state, v);
6480 basic_istream_char_sentry_destroy(this);
6482 basic_ios_char_setstate(base, state);
6483 return this;
6486 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAJ@Z */
6487 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAJ@Z */
6488 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_long, 8)
6489 basic_istream_char* __thiscall basic_istream_char_read_long(basic_istream_char *this, LONG *v)
6491 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6492 int state = IOSTATE_goodbit;
6494 TRACE("(%p %p)\n", this, v);
6496 if(basic_istream_char_sentry_create(this, FALSE)) {
6497 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6498 const num_get *numget = num_get_char_use_facet(strbuf->loc);
6499 istreambuf_iterator_char first={0}, last={0};
6501 first.strbuf = strbuf;
6502 num_get_char_get_long(numget, &last, first, last, &base->base, &state, v);
6504 basic_istream_char_sentry_destroy(this);
6506 basic_ios_char_setstate(base, state);
6507 return this;
6510 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAK@Z */
6511 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAK@Z */
6512 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ulong, 8)
6513 basic_istream_char* __thiscall basic_istream_char_read_ulong(basic_istream_char *this, ULONG *v)
6515 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6516 int state = IOSTATE_goodbit;
6518 TRACE("(%p %p)\n", this, v);
6520 if(basic_istream_char_sentry_create(this, FALSE)) {
6521 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6522 const num_get *numget = num_get_char_use_facet(strbuf->loc);
6523 istreambuf_iterator_char first={0}, last={0};
6525 first.strbuf = strbuf;
6526 num_get_char_get_ulong(numget, &last, first, last, &base->base, &state, v);
6528 basic_istream_char_sentry_destroy(this);
6530 basic_ios_char_setstate(base, state);
6531 return this;
6534 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAM@Z */
6535 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAM@Z */
6536 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_float, 8)
6537 basic_istream_char* __thiscall basic_istream_char_read_float(basic_istream_char *this, float *v)
6539 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6540 int state = IOSTATE_goodbit;
6542 TRACE("(%p %p)\n", this, v);
6544 if(basic_istream_char_sentry_create(this, FALSE)) {
6545 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6546 const num_get *numget = num_get_char_use_facet(strbuf->loc);
6547 istreambuf_iterator_char first={0}, last={0};
6549 first.strbuf = strbuf;
6550 num_get_char_get_float(numget, &last, first, last, &base->base, &state, v);
6552 basic_istream_char_sentry_destroy(this);
6554 basic_ios_char_setstate(base, state);
6555 return this;
6558 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAN@Z */
6559 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAN@Z */
6560 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_double, 8)
6561 basic_istream_char* __thiscall basic_istream_char_read_double(basic_istream_char *this, double *v)
6563 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6564 int state = IOSTATE_goodbit;
6566 TRACE("(%p %p)\n", this, v);
6568 if(basic_istream_char_sentry_create(this, FALSE)) {
6569 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6570 const num_get *numget = num_get_char_use_facet(strbuf->loc);
6571 istreambuf_iterator_char first={0}, last={0};
6573 first.strbuf = strbuf;
6574 num_get_char_get_double(numget, &last, first, last, &base->base, &state, v);
6576 basic_istream_char_sentry_destroy(this);
6578 basic_ios_char_setstate(base, state);
6579 return this;
6582 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAO@Z */
6583 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAO@Z */
6584 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ldouble, 8)
6585 basic_istream_char* __thiscall basic_istream_char_read_ldouble(basic_istream_char *this, double *v)
6587 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6588 int state = IOSTATE_goodbit;
6590 TRACE("(%p %p)\n", this, v);
6592 if(basic_istream_char_sentry_create(this, FALSE)) {
6593 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6594 const num_get *numget = num_get_char_use_facet(strbuf->loc);
6595 istreambuf_iterator_char first={0}, last={0};
6597 first.strbuf = strbuf;
6598 num_get_char_get_ldouble(numget, &last, first, last, &base->base, &state, v);
6600 basic_istream_char_sentry_destroy(this);
6602 basic_ios_char_setstate(base, state);
6603 return this;
6606 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAPAX@Z */
6607 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
6608 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ptr, 8)
6609 basic_istream_char* __thiscall basic_istream_char_read_ptr(basic_istream_char *this, void **v)
6611 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6612 int state = IOSTATE_goodbit;
6614 TRACE("(%p %p)\n", this, v);
6616 if(basic_istream_char_sentry_create(this, FALSE)) {
6617 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6618 const num_get *numget = num_get_char_use_facet(strbuf->loc);
6619 istreambuf_iterator_char first={0}, last={0};
6621 first.strbuf = strbuf;
6622 num_get_char_get_void(numget, &last, first, last, &base->base, &state, v);
6624 basic_istream_char_sentry_destroy(this);
6626 basic_ios_char_setstate(base, state);
6627 return this;
6630 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_J@Z */
6631 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_J@Z */
6632 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int64, 8)
6633 basic_istream_char* __thiscall basic_istream_char_read_int64(basic_istream_char *this, __int64 *v)
6635 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6636 int state = IOSTATE_goodbit;
6638 TRACE("(%p %p)\n", this, v);
6640 if(basic_istream_char_sentry_create(this, FALSE)) {
6641 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6642 const num_get *numget = num_get_char_use_facet(strbuf->loc);
6643 istreambuf_iterator_char first={0}, last={0};
6645 first.strbuf = strbuf;
6646 num_get_char_get_int64(numget, &last, first, last, &base->base, &state, v);
6648 basic_istream_char_sentry_destroy(this);
6650 basic_ios_char_setstate(base, state);
6651 return this;
6654 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_K@Z */
6655 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_K@Z */
6656 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint64, 8)
6657 basic_istream_char* __thiscall basic_istream_char_read_uint64(basic_istream_char *this, unsigned __int64 *v)
6659 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6660 int state = IOSTATE_goodbit;
6662 TRACE("(%p %p)\n", this, v);
6664 if(basic_istream_char_sentry_create(this, FALSE)) {
6665 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6666 const num_get *numget = num_get_char_use_facet(strbuf->loc);
6667 istreambuf_iterator_char first={0}, last={0};
6669 first.strbuf = strbuf;
6670 num_get_char_get_uint64(numget, &last, first, last, &base->base, &state, v);
6672 basic_istream_char_sentry_destroy(this);
6674 basic_ios_char_setstate(base, state);
6675 return this;
6678 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_N@Z */
6679 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_N@Z */
6680 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_bool, 8)
6681 basic_istream_char* __thiscall basic_istream_char_read_bool(basic_istream_char *this, MSVCP_bool *v)
6683 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
6684 int state = IOSTATE_goodbit;
6686 TRACE("(%p %p)\n", this, v);
6688 if(basic_istream_char_sentry_create(this, FALSE)) {
6689 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
6690 const num_get *numget = num_get_char_use_facet(strbuf->loc);
6691 istreambuf_iterator_char first={0}, last={0};
6693 first.strbuf = strbuf;
6694 num_get_char_get_bool(numget, &last, first, last, &base->base, &state, v);
6696 basic_istream_char_sentry_destroy(this);
6698 basic_ios_char_setstate(base, state);
6699 return this;
6702 /* ??$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 */
6703 /* ??$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 */
6704 basic_istream_char* __cdecl basic_istream_char_getline_bstr_delim(
6705 basic_istream_char *istream, basic_string_char *str, char delim)
6707 IOSB_iostate state = IOSTATE_failbit;
6708 int c = delim;
6710 TRACE("(%p %p %c)\n", istream, str, delim);
6712 if(basic_istream_char_sentry_create(istream, TRUE)) {
6713 MSVCP_basic_string_char_clear(str);
6715 for(c = basic_istream_char_get(istream); c!=delim && c!=EOF;
6716 c = basic_istream_char_get(istream)) {
6717 state = IOSTATE_goodbit;
6718 MSVCP_basic_string_char_append_ch(str, c);
6721 basic_istream_char_sentry_destroy(istream);
6723 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream),
6724 state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
6725 return istream;
6728 /* ??$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 */
6729 /* ??$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 */
6730 basic_istream_char* __cdecl basic_istream_char_getline_bstr(
6731 basic_istream_char *istream, basic_string_char *str)
6733 return basic_istream_char_getline_bstr_delim(istream, str, '\n');
6736 /* ??$?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 */
6737 /* ??$?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 */
6738 basic_istream_char* __cdecl basic_istream_char_get_bstr(
6739 basic_istream_char *istream, basic_string_char *str)
6741 IOSB_iostate state = IOSTATE_failbit;
6742 int c = '\n';
6744 TRACE("(%p %p)\n", istream, str);
6746 if(basic_istream_char_sentry_create(istream, FALSE)) {
6747 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
6748 const ctype_char *ctype = ctype_char_use_facet(base->strbuf->loc);
6750 MSVCP_basic_string_char_clear(str);
6752 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
6753 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c);
6754 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base))) {
6755 state = IOSTATE_goodbit;
6756 MSVCP_basic_string_char_append_ch(str, c);
6759 basic_istream_char_sentry_destroy(istream);
6761 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream),
6762 state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
6763 return istream;
6766 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAD@Z */
6767 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAD@Z */
6768 basic_istream_char* __cdecl basic_istream_char_read_ch(basic_istream_char *istream, char *ch)
6770 IOSB_iostate state = IOSTATE_failbit;
6771 int c = 0;
6773 TRACE("(%p %p)\n", istream, ch);
6775 if(basic_istream_char_sentry_create(istream, FALSE)) {
6776 c = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(
6777 basic_istream_char_get_basic_ios(istream)));
6778 if(c != EOF) {
6779 state = IOSTATE_goodbit;
6780 *ch = c;
6783 basic_istream_char_sentry_destroy(istream);
6785 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream),
6786 state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
6787 return istream;
6790 /* Caution: basic_istream uses virtual inheritance. */
6791 static inline basic_ios_wchar* basic_istream_wchar_get_basic_ios(basic_istream_wchar *this)
6793 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
6796 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */
6797 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */
6798 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_init, 20)
6799 basic_istream_wchar* __thiscall basic_istream_wchar_ctor_init(basic_istream_wchar *this, basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool noinit, MSVCP_bool virt_init)
6801 basic_ios_wchar *base;
6803 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
6805 if(virt_init) {
6806 this->vbtable = basic_istream_wchar_vbtable;
6807 base = basic_istream_wchar_get_basic_ios(this);
6808 basic_ios_wchar_ctor(base);
6809 }else {
6810 base = basic_istream_wchar_get_basic_ios(this);
6813 base->base.vtable = &MSVCP_basic_istream_wchar_vtable;
6814 this->count = 0;
6815 if(!noinit)
6816 basic_ios_wchar_init(base, strbuf, isstd);
6817 return this;
6820 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
6821 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
6822 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor, 16)
6823 basic_istream_wchar* __thiscall basic_istream_wchar_ctor(basic_istream_wchar *this, basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
6825 return basic_istream_wchar_ctor_init(this, strbuf, isstd, FALSE, virt_init);
6828 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */
6829 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
6830 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_uninitialized, 12)
6831 basic_istream_wchar* __thiscall basic_istream_wchar_ctor_uninitialized(basic_istream_wchar *this, int uninitialized, MSVCP_bool virt_init)
6833 basic_ios_wchar *base;
6835 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
6837 if(virt_init) {
6838 this->vbtable = basic_istream_wchar_vbtable;
6839 base = basic_istream_wchar_get_basic_ios(this);
6840 basic_ios_wchar_ctor(base);
6841 }else {
6842 base = basic_istream_wchar_get_basic_ios(this);
6845 base->base.vtable = &MSVCP_basic_istream_wchar_vtable;
6846 ios_base_Addstd(&base->base);
6847 return this;
6850 /* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
6851 /* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
6852 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_dtor, 4)
6853 void __thiscall basic_istream_wchar_dtor(basic_istream_wchar *this)
6855 /* don't destroy virtual base here */
6856 TRACE("(%p)\n", this);
6859 /* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
6860 /* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
6861 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_vbase_dtor, 4)
6862 void __thiscall basic_istream_wchar_vbase_dtor(basic_istream_wchar *this)
6864 TRACE("(%p)\n", this);
6865 basic_istream_wchar_dtor(this);
6866 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(this));
6869 DEFINE_THISCALL_WRAPPER(MSVCP_basic_istream_wchar_vector_dtor, 8)
6870 basic_istream_wchar* __thiscall MSVCP_basic_istream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
6872 basic_istream_wchar *this = (basic_istream_wchar *)((char*)base - basic_istream_wchar_vbtable[1] + basic_istream_wchar_vbtable[0]);
6874 TRACE("(%p %x)\n", this, flags);
6876 if(flags & 2) {
6877 /* we have an array, with the number of elements stored before the first object */
6878 int i, *ptr = (int *)this-1;
6880 for(i=*ptr-1; i>=0; i--)
6881 basic_istream_wchar_vbase_dtor(this+i);
6882 MSVCRT_operator_delete(ptr);
6883 } else {
6884 basic_istream_wchar_vbase_dtor(this);
6885 if(flags & 1)
6886 MSVCRT_operator_delete(this);
6889 return this;
6892 /* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */
6893 /* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */
6894 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Ipfx, 8)
6895 MSVCP_bool __thiscall basic_istream_wchar__Ipfx(basic_istream_wchar *this, MSVCP_bool noskip)
6897 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
6899 TRACE("(%p %d)\n", this, noskip);
6901 if(!ios_base_good(&base->base)) {
6902 basic_ios_wchar_setstate(base, IOSTATE_failbit);
6903 return FALSE;
6906 if(basic_ios_wchar_tie_get(base))
6907 basic_ostream_wchar_flush(basic_ios_wchar_tie_get(base));
6909 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
6910 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6911 const ctype_wchar *ctype = ctype_wchar_use_facet(base->strbuf->loc);
6912 int ch;
6914 for(ch = basic_streambuf_wchar_sgetc(strbuf); ;
6915 ch = basic_streambuf_wchar_snextc(strbuf)) {
6916 if(ch == WEOF) {
6917 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
6918 return FALSE;
6921 if(!ctype_wchar_is_ch(ctype, _SPACE|_BLANK, ch))
6922 break;
6926 return TRUE;
6929 /* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */
6930 /* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */
6931 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ipfx, 8)
6932 MSVCP_bool __thiscall basic_istream_wchar_ipfx(basic_istream_wchar *this, MSVCP_bool noskip)
6934 return basic_istream_wchar__Ipfx(this, noskip);
6937 /* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
6938 /* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
6939 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_isfx, 4)
6940 void __thiscall basic_istream_wchar_isfx(basic_istream_wchar *this)
6942 TRACE("(%p)\n", this);
6945 static BOOL basic_istream_wchar_sentry_create(basic_istream_wchar *istr, MSVCP_bool noskip)
6947 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr);
6949 if(basic_ios_wchar_rdbuf_get(base))
6950 basic_streambuf_wchar__Lock(base->strbuf);
6952 return basic_istream_wchar_ipfx(istr, noskip);
6955 static void basic_istream_wchar_sentry_destroy(basic_istream_wchar *istr)
6957 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr);
6959 if(basic_ios_wchar_rdbuf_get(base))
6960 basic_streambuf_wchar__Unlock(base->strbuf);
6963 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBEHXZ */
6964 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEBA_JXZ */
6965 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_gcount, 4)
6966 int __thiscall basic_istream_wchar_gcount(const basic_istream_wchar *this)
6968 TRACE("(%p)\n", this);
6969 return this->count;
6972 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
6973 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
6974 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get, 4)
6975 unsigned short __thiscall basic_istream_wchar_get(basic_istream_wchar *this)
6977 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
6978 int ret;
6980 TRACE("(%p)\n", this);
6982 this->count = 0;
6984 if(!basic_istream_wchar_sentry_create(this, TRUE)) {
6985 basic_istream_wchar_sentry_destroy(this);
6986 return WEOF;
6989 ret = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(base));
6990 basic_istream_wchar_sentry_destroy(this);
6991 if(ret == WEOF)
6992 basic_ios_wchar_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
6993 else
6994 this->count++;
6996 return ret;
6999 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AA_W@Z */
7000 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEA_W@Z */
7001 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_ch, 8)
7002 basic_istream_wchar* __thiscall basic_istream_wchar_get_ch(basic_istream_wchar *this, wchar_t *ch)
7004 unsigned short ret;
7006 TRACE("(%p %p)\n", this, ch);
7008 ret = basic_istream_wchar_get(this);
7009 if(ret != WEOF)
7010 *ch = (wchar_t)ret;
7011 return this;
7014 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */
7015 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */
7016 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str_delim, 16)
7017 basic_istream_wchar* __thiscall basic_istream_wchar_get_str_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
7019 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7020 unsigned short ch = delim;
7022 TRACE("(%p %p %ld %c)\n", this, str, count, delim);
7024 this->count = 0;
7026 if(basic_istream_wchar_sentry_create(this, TRUE)) {
7027 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7029 for(ch = basic_streambuf_wchar_sgetc(strbuf); count>1;
7030 ch = basic_streambuf_wchar_snextc(strbuf)) {
7031 if(ch==WEOF || ch==delim)
7032 break;
7034 *str++ = ch;
7035 this->count++;
7036 count--;
7039 basic_istream_wchar_sentry_destroy(this);
7041 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
7042 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7043 if(count > 0)
7044 *str = 0;
7045 return this;
7048 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
7049 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
7050 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str, 12)
7051 basic_istream_wchar* __thiscall basic_istream_wchar_get_str(basic_istream_wchar *this, wchar_t *str, streamsize count)
7053 return basic_istream_wchar_get_str_delim(this, str, count, '\n');
7056 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */
7057 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */
7058 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf_delim, 12)
7059 basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf_delim(basic_istream_wchar *this, basic_streambuf_wchar *strbuf, wchar_t delim)
7061 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7062 unsigned short ch = delim;
7064 TRACE("(%p %p %c)\n", this, strbuf, delim);
7066 this->count = 0;
7068 if(basic_istream_wchar_sentry_create(this, TRUE)) {
7069 basic_streambuf_wchar *strbuf_read = basic_ios_wchar_rdbuf_get(base);
7071 for(ch = basic_streambuf_wchar_sgetc(strbuf_read); ;
7072 ch = basic_streambuf_wchar_snextc(strbuf_read)) {
7073 if(ch==WEOF || ch==delim)
7074 break;
7076 if(basic_streambuf_wchar_sputc(strbuf, ch) == WEOF)
7077 break;
7078 this->count++;
7081 basic_istream_wchar_sentry_destroy(this);
7083 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
7084 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7085 return this;
7088 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */
7089 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */
7090 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf, 8)
7091 basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf(basic_istream_wchar *this, basic_streambuf_wchar *strbuf)
7093 return basic_istream_wchar_get_streambuf_delim(this, strbuf, '\n');
7096 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */
7097 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */
7098 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline_delim, 16)
7099 basic_istream_wchar* __thiscall basic_istream_wchar_getline_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
7101 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7102 unsigned short ch = delim;
7104 TRACE("(%p %p %ld %c)\n", this, str, count, delim);
7106 this->count = 0;
7108 if(basic_istream_wchar_sentry_create(this, TRUE) && count>0) {
7109 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7111 while(count > 1) {
7112 ch = basic_streambuf_wchar_sbumpc(strbuf);
7114 if(ch==WEOF || ch==delim)
7115 break;
7117 *str++ = ch;
7118 this->count++;
7119 count--;
7122 if(ch == delim)
7123 this->count++;
7124 else if(ch != WEOF) {
7125 ch = basic_streambuf_wchar_sgetc(strbuf);
7127 if(ch == delim) {
7128 basic_streambuf_wchar__Gninc(strbuf);
7129 this->count++;
7133 basic_istream_wchar_sentry_destroy(this);
7135 basic_ios_wchar_setstate(base, (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
7136 (!this->count || (ch!=delim && ch!=WEOF) ? IOSTATE_failbit : IOSTATE_goodbit));
7137 if(count > 0)
7138 *str = 0;
7139 return this;
7142 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
7143 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
7144 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline, 12)
7145 basic_istream_wchar* __thiscall basic_istream_wchar_getline(basic_istream_wchar *this, wchar_t *str, streamsize count)
7147 return basic_istream_wchar_getline_delim(this, str, count, '\n');
7150 /* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@HG@Z */
7151 /* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JG@Z */
7152 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ignore, 12)
7153 basic_istream_wchar* __thiscall basic_istream_wchar_ignore(basic_istream_wchar *this, streamsize count, unsigned short delim)
7155 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7156 unsigned short ch = delim;
7158 TRACE("(%p %ld %d)\n", this, count, delim);
7160 this->count = 0;
7162 if(basic_istream_wchar_sentry_create(this, TRUE)) {
7163 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7165 while(count > 0) {
7166 ch = basic_streambuf_wchar_sbumpc(strbuf);
7168 if(ch==WEOF || ch==delim)
7169 break;
7171 this->count++;
7172 if(count != INT_MAX)
7173 count--;
7176 basic_istream_wchar_sentry_destroy(this);
7178 if(ch == WEOF)
7179 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
7180 return this;
7183 /* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
7184 /* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
7185 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_peek, 4)
7186 unsigned short __thiscall basic_istream_wchar_peek(basic_istream_wchar *this)
7188 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7189 unsigned short ret = WEOF;
7191 TRACE("(%p)\n", this);
7193 this->count = 0;
7195 if(basic_istream_wchar_sentry_create(this, TRUE))
7196 ret = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
7197 basic_istream_wchar_sentry_destroy(this);
7198 return ret;
7201 /* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WIH@Z */
7202 /* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_K_J@Z */
7203 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Read_s, 16)
7204 basic_istream_wchar* __thiscall basic_istream_wchar__Read_s(basic_istream_wchar *this, wchar_t *str, MSVCP_size_t size, streamsize count)
7206 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7207 IOSB_iostate state = IOSTATE_goodbit;
7209 TRACE("(%p %p %lu %ld)\n", this, str, size, count);
7211 if(basic_istream_wchar_sentry_create(this, TRUE)) {
7212 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7214 this->count = basic_streambuf_wchar__Sgetn_s(strbuf, str, size, count);
7215 if(this->count != count)
7216 state |= IOSTATE_failbit | IOSTATE_eofbit;
7217 }else {
7218 this->count = 0;
7220 basic_istream_wchar_sentry_destroy(this);
7222 basic_ios_wchar_setstate(base, state);
7223 return this;
7226 /* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
7227 /* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
7228 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read, 12)
7229 basic_istream_wchar* __thiscall basic_istream_wchar_read(basic_istream_wchar *this, wchar_t *str, streamsize count)
7231 return basic_istream_wchar__Read_s(this, str, count, count);
7234 /* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
7235 /* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
7236 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Readsome_s, 16)
7237 streamsize __thiscall basic_istream_wchar__Readsome_s(basic_istream_wchar *this, wchar_t *str, MSVCP_size_t size, streamsize count)
7239 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7240 IOSB_iostate state = IOSTATE_goodbit;
7242 TRACE("(%p %p %lu %ld)\n", this, str, size, count);
7244 this->count = 0;
7246 if(basic_istream_wchar_sentry_create(this, TRUE)) {
7247 streamsize avail = basic_streambuf_wchar_in_avail(basic_ios_wchar_rdbuf_get(base));
7248 if(avail > count)
7249 avail = count;
7251 if(avail == -1)
7252 state |= IOSTATE_eofbit;
7253 else if(avail > 0)
7254 basic_istream_wchar__Read_s(this, str, size, avail);
7255 }else {
7256 state |= IOSTATE_failbit;
7258 basic_istream_wchar_sentry_destroy(this);
7260 basic_ios_wchar_setstate(base, state);
7261 return this->count;
7264 /* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
7265 /* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
7266 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_readsome, 12)
7267 streamsize __thiscall basic_istream_wchar_readsome(basic_istream_wchar *this, wchar_t *str, streamsize count)
7269 return basic_istream_wchar__Readsome_s(this, str, count, count);
7272 /* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */
7273 /* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */
7274 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_putback, 8)
7275 basic_istream_wchar* __thiscall basic_istream_wchar_putback(basic_istream_wchar *this, wchar_t ch)
7277 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7278 IOSB_iostate state = IOSTATE_goodbit;
7280 TRACE("(%p %c)\n", this, ch);
7282 this->count = 0;
7284 if(basic_istream_wchar_sentry_create(this, TRUE)) {
7285 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7287 if(!ios_base_good(&base->base))
7288 state |= IOSTATE_failbit;
7289 else if(!strbuf || basic_streambuf_wchar_sputbackc(strbuf, ch)==WEOF)
7290 state |= IOSTATE_badbit;
7292 basic_istream_wchar_sentry_destroy(this);
7294 basic_ios_wchar_setstate(base, state);
7295 return this;
7298 /* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */
7299 /* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */
7300 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_unget, 4)
7301 basic_istream_wchar* __thiscall basic_istream_wchar_unget(basic_istream_wchar *this)
7303 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7304 IOSB_iostate state = IOSTATE_goodbit;
7306 TRACE("(%p)\n", this);
7308 this->count = 0;
7310 if(basic_istream_wchar_sentry_create(this, TRUE)) {
7311 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7313 if(!ios_base_good(&base->base))
7314 state |= IOSTATE_failbit;
7315 else if(!strbuf || basic_streambuf_wchar_sungetc(strbuf)==WEOF)
7316 state |= IOSTATE_badbit;
7318 basic_istream_wchar_sentry_destroy(this);
7320 basic_ios_wchar_setstate(base, state);
7321 return this;
7324 /* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
7325 /* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
7326 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_sync, 4)
7327 int __thiscall basic_istream_wchar_sync(basic_istream_wchar *this)
7329 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7330 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7332 TRACE("(%p)\n", this);
7334 if(!strbuf)
7335 return -1;
7337 if(basic_istream_wchar_sentry_create(this, TRUE)) {
7338 if(basic_streambuf_wchar_pubsync(strbuf) != -1) {
7339 basic_istream_wchar_sentry_destroy(this);
7340 return 0;
7343 basic_istream_wchar_sentry_destroy(this);
7345 basic_ios_wchar_setstate(base, IOSTATE_badbit);
7346 return -1;
7349 /* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */
7350 /* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
7351 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_tellg, 8)
7352 fpos_int* __thiscall basic_istream_wchar_tellg(basic_istream_wchar *this, fpos_int *ret)
7354 TRACE("(%p %p)\n", this, ret);
7356 if(basic_istream_wchar_sentry_create(this, TRUE)) {
7357 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7358 if(!ios_base_fail(&base->base)) {
7359 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
7360 ret, 0, SEEKDIR_cur, OPENMODE_in);
7361 basic_istream_wchar_sentry_destroy(this);
7363 if(ret->off==0 && ret->pos==-1 && ret->state==0)
7364 basic_ios_wchar_setstate(base, IOSTATE_failbit);
7365 return ret;
7368 basic_istream_wchar_sentry_destroy(this);
7370 ret->off = 0;
7371 ret->pos = -1;
7372 ret->state = 0;
7373 return ret;
7376 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */
7377 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */
7378 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg, 12)
7379 basic_istream_wchar* __thiscall basic_istream_wchar_seekg(basic_istream_wchar *this, streamoff off, int dir)
7381 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7383 TRACE("(%p %ld %d)\n", this, off, dir);
7385 if(basic_istream_wchar_sentry_create(this, TRUE)) {
7386 if(!ios_base_fail(&base->base)) {
7387 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7388 fpos_int ret;
7390 basic_streambuf_wchar_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
7391 basic_istream_wchar_sentry_destroy(this);
7393 if(ret.off==0 && ret.pos==-1 && ret.state==0)
7394 basic_ios_wchar_setstate(base, IOSTATE_failbit);
7395 else
7396 basic_ios_wchar_clear(base, IOSTATE_goodbit);
7397 return this;
7400 basic_istream_wchar_sentry_destroy(this);
7402 basic_ios_wchar_setstate(base, IOSTATE_failbit);
7403 return this;
7406 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
7407 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
7408 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg_fpos, 28)
7409 basic_istream_wchar* __thiscall basic_istream_wchar_seekg_fpos(basic_istream_wchar *this, fpos_int pos)
7411 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7413 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
7415 if(basic_istream_wchar_sentry_create(this, TRUE)) {
7416 if(!ios_base_fail(&base->base)) {
7417 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7418 fpos_int ret;
7420 basic_streambuf_wchar_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
7421 basic_istream_wchar_sentry_destroy(this);
7423 if(ret.off==0 && ret.pos==-1 && ret.state==0)
7424 basic_ios_wchar_setstate(base, IOSTATE_failbit);
7425 else
7426 basic_ios_wchar_clear(base, IOSTATE_goodbit);
7427 return this;
7430 basic_istream_wchar_sentry_destroy(this);
7432 basic_ios_wchar_setstate(base, IOSTATE_failbit);
7433 return this;
7436 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAF@Z */
7437 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAF@Z */
7438 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_short, 8)
7439 basic_istream_wchar* __thiscall basic_istream_wchar_read_short(basic_istream_wchar *this, short *v)
7441 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7442 int state = IOSTATE_goodbit;
7444 TRACE("(%p %p)\n", this, v);
7446 if(basic_istream_wchar_sentry_create(this, FALSE)) {
7447 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7448 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
7449 istreambuf_iterator_wchar first={0}, last={0};
7450 LONG tmp;
7452 first.strbuf = strbuf;
7453 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, &tmp);
7455 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
7456 *v = tmp;
7457 else
7458 state |= IOSTATE_failbit;
7460 basic_istream_wchar_sentry_destroy(this);
7462 basic_ios_wchar_setstate(base, state);
7463 return this;
7466 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAG@Z */
7467 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAG@Z */
7468 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ushort, 8)
7469 basic_istream_wchar* __thiscall basic_istream_wchar_read_ushort(basic_istream_wchar *this, unsigned short *v)
7471 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7472 int state = IOSTATE_goodbit;
7474 TRACE("(%p %p)\n", this, v);
7476 if(basic_istream_wchar_sentry_create(this, FALSE)) {
7477 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7478 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
7479 istreambuf_iterator_wchar first={0}, last={0};
7481 first.strbuf = strbuf;
7482 num_get_wchar_get_ushort(numget, &last, first, last, &base->base, &state, v);
7484 basic_istream_wchar_sentry_destroy(this);
7486 basic_ios_wchar_setstate(base, state);
7487 return this;
7490 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAH@Z */
7491 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAH@Z */
7492 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int, 8)
7493 basic_istream_wchar* __thiscall basic_istream_wchar_read_int(basic_istream_wchar *this, int *v)
7495 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7496 int state = IOSTATE_goodbit;
7498 TRACE("(%p %p)\n", this, v);
7500 if(basic_istream_wchar_sentry_create(this, FALSE)) {
7501 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7502 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
7503 istreambuf_iterator_wchar first={0}, last={0};
7505 first.strbuf = strbuf;
7506 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v);
7508 basic_istream_wchar_sentry_destroy(this);
7510 basic_ios_wchar_setstate(base, state);
7511 return this;
7514 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAI@Z */
7515 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAI@Z */
7516 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint, 8)
7517 basic_istream_wchar* __thiscall basic_istream_wchar_read_uint(basic_istream_wchar *this, unsigned int *v)
7519 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7520 int state = IOSTATE_goodbit;
7522 TRACE("(%p %p)\n", this, v);
7524 if(basic_istream_wchar_sentry_create(this, FALSE)) {
7525 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7526 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
7527 istreambuf_iterator_wchar first={0}, last={0};
7529 first.strbuf = strbuf;
7530 num_get_wchar_get_uint(numget, &last, first, last, &base->base, &state, v);
7532 basic_istream_wchar_sentry_destroy(this);
7534 basic_ios_wchar_setstate(base, state);
7535 return this;
7538 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z */
7539 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z */
7540 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_long, 8)
7541 basic_istream_wchar* __thiscall basic_istream_wchar_read_long(basic_istream_wchar *this, LONG *v)
7543 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7544 int state = IOSTATE_goodbit;
7546 TRACE("(%p %p)\n", this, v);
7548 if(basic_istream_wchar_sentry_create(this, FALSE)) {
7549 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7550 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
7551 istreambuf_iterator_wchar first={0}, last={0};
7553 first.strbuf = strbuf;
7554 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v);
7556 basic_istream_wchar_sentry_destroy(this);
7558 basic_ios_wchar_setstate(base, state);
7559 return this;
7562 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAK@Z */
7563 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAK@Z */
7564 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ulong, 8)
7565 basic_istream_wchar* __thiscall basic_istream_wchar_read_ulong(basic_istream_wchar *this, ULONG *v)
7567 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7568 int state = IOSTATE_goodbit;
7570 TRACE("(%p %p)\n", this, v);
7572 if(basic_istream_wchar_sentry_create(this, FALSE)) {
7573 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7574 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
7575 istreambuf_iterator_wchar first={0}, last={0};
7577 first.strbuf = strbuf;
7578 num_get_wchar_get_ulong(numget, &last, first, last, &base->base, &state, v);
7580 basic_istream_wchar_sentry_destroy(this);
7582 basic_ios_wchar_setstate(base, state);
7583 return this;
7586 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAM@Z */
7587 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAM@Z */
7588 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_float, 8)
7589 basic_istream_wchar* __thiscall basic_istream_wchar_read_float(basic_istream_wchar *this, float *v)
7591 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7592 int state = IOSTATE_goodbit;
7594 TRACE("(%p %p)\n", this, v);
7596 if(basic_istream_wchar_sentry_create(this, FALSE)) {
7597 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7598 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
7599 istreambuf_iterator_wchar first={0}, last={0};
7601 first.strbuf = strbuf;
7602 num_get_wchar_get_float(numget, &last, first, last, &base->base, &state, v);
7604 basic_istream_wchar_sentry_destroy(this);
7606 basic_ios_wchar_setstate(base, state);
7607 return this;
7610 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAN@Z */
7611 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAN@Z */
7612 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_double, 8)
7613 basic_istream_wchar* __thiscall basic_istream_wchar_read_double(basic_istream_wchar *this, double *v)
7615 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7616 int state = IOSTATE_goodbit;
7618 TRACE("(%p %p)\n", this, v);
7620 if(basic_istream_wchar_sentry_create(this, FALSE)) {
7621 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7622 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
7623 istreambuf_iterator_wchar first={0}, last={0};
7625 first.strbuf = strbuf;
7626 num_get_wchar_get_double(numget, &last, first, last, &base->base, &state, v);
7628 basic_istream_wchar_sentry_destroy(this);
7630 basic_ios_wchar_setstate(base, state);
7631 return this;
7634 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAO@Z */
7635 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAO@Z */
7636 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ldouble, 8)
7637 basic_istream_wchar* __thiscall basic_istream_wchar_read_ldouble(basic_istream_wchar *this, double *v)
7639 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7640 int state = IOSTATE_goodbit;
7642 TRACE("(%p %p)\n", this, v);
7644 if(basic_istream_wchar_sentry_create(this, FALSE)) {
7645 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7646 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
7647 istreambuf_iterator_wchar first={0}, last={0};
7649 first.strbuf = strbuf;
7650 num_get_wchar_get_ldouble(numget, &last, first, last, &base->base, &state, v);
7652 basic_istream_wchar_sentry_destroy(this);
7654 basic_ios_wchar_setstate(base, state);
7655 return this;
7658 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAPAX@Z */
7659 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
7660 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ptr, 8)
7661 basic_istream_wchar* __thiscall basic_istream_wchar_read_ptr(basic_istream_wchar *this, void **v)
7663 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7664 int state = IOSTATE_goodbit;
7666 TRACE("(%p %p)\n", this, v);
7668 if(basic_istream_wchar_sentry_create(this, FALSE)) {
7669 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7670 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
7671 istreambuf_iterator_wchar first={0}, last={0};
7673 first.strbuf = strbuf;
7674 num_get_wchar_get_void(numget, &last, first, last, &base->base, &state, v);
7676 basic_istream_wchar_sentry_destroy(this);
7678 basic_ios_wchar_setstate(base, state);
7679 return this;
7682 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_J@Z */
7683 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_J@Z */
7684 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int64, 8)
7685 basic_istream_wchar* __thiscall basic_istream_wchar_read_int64(basic_istream_wchar *this, __int64 *v)
7687 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7688 int state = IOSTATE_goodbit;
7690 TRACE("(%p %p)\n", this, v);
7692 if(basic_istream_wchar_sentry_create(this, FALSE)) {
7693 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7694 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
7695 istreambuf_iterator_wchar first={0}, last={0};
7697 first.strbuf = strbuf;
7698 num_get_wchar_get_int64(numget, &last, first, last, &base->base, &state, v);
7700 basic_istream_wchar_sentry_destroy(this);
7702 basic_ios_wchar_setstate(base, state);
7703 return this;
7706 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_K@Z */
7707 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_K@Z */
7708 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint64, 8)
7709 basic_istream_wchar* __thiscall basic_istream_wchar_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
7711 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7712 int state = IOSTATE_goodbit;
7714 TRACE("(%p %p)\n", this, v);
7716 if(basic_istream_wchar_sentry_create(this, FALSE)) {
7717 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7718 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
7719 istreambuf_iterator_wchar first={0}, last={0};
7721 first.strbuf = strbuf;
7722 num_get_wchar_get_uint64(numget, &last, first, last, &base->base, &state, v);
7724 basic_istream_wchar_sentry_destroy(this);
7726 basic_ios_wchar_setstate(base, state);
7727 return this;
7730 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_N@Z */
7731 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_N@Z */
7732 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_bool, 8)
7733 basic_istream_wchar* __thiscall basic_istream_wchar_read_bool(basic_istream_wchar *this, MSVCP_bool *v)
7735 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
7736 int state = IOSTATE_goodbit;
7738 TRACE("(%p %p)\n", this, v);
7740 if(basic_istream_wchar_sentry_create(this, FALSE)) {
7741 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
7742 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
7743 istreambuf_iterator_wchar first={0}, last={0};
7745 first.strbuf = strbuf;
7746 num_get_wchar_get_bool(numget, &last, first, last, &base->base, &state, v);
7748 basic_istream_wchar_sentry_destroy(this);
7750 basic_ios_wchar_setstate(base, state);
7751 return this;
7754 /* ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_W@Z */
7755 /* ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_W@Z */
7756 basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr_delim(
7757 basic_istream_wchar *istream, basic_string_wchar *str, wchar_t delim)
7759 IOSB_iostate state = IOSTATE_failbit;
7760 int c = delim;
7762 TRACE("(%p %p %c)\n", istream, str, delim);
7764 if(basic_istream_wchar_sentry_create(istream, TRUE)) {
7765 MSVCP_basic_string_wchar_clear(str);
7767 for(c = basic_istream_wchar_get(istream); c!=delim && c!=WEOF;
7768 c = basic_istream_wchar_get(istream)) {
7769 state = IOSTATE_goodbit;
7770 MSVCP_basic_string_wchar_append_ch(str, c);
7773 basic_istream_wchar_sentry_destroy(istream);
7775 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream),
7776 state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7777 return istream;
7780 /* ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
7781 /* ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
7782 basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr(
7783 basic_istream_wchar *istream, basic_string_wchar *str)
7785 return basic_istream_wchar_getline_bstr_delim(istream, str, '\n');
7788 /* ??$?5_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
7789 /* ??$?5_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */
7790 basic_istream_wchar* __cdecl basic_istream_wchar_get_bstr(
7791 basic_istream_wchar *istream, basic_string_wchar *str)
7793 IOSB_iostate state = IOSTATE_failbit;
7794 int c = '\n';
7796 TRACE("(%p %p)\n", istream, str);
7798 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
7799 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
7800 const ctype_wchar *ctype = ctype_wchar_use_facet(base->strbuf->loc);
7802 MSVCP_basic_string_wchar_clear(str);
7804 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
7805 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c);
7806 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base))) {
7807 state = IOSTATE_goodbit;
7808 MSVCP_basic_string_wchar_append_ch(str, c);
7811 basic_istream_wchar_sentry_destroy(istream);
7813 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream),
7814 state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7815 return istream;
7818 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AA_W@Z */
7819 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEA_W@Z */
7820 basic_istream_wchar* __cdecl basic_istream_wchar_read_ch(basic_istream_wchar *istream, wchar_t *ch)
7822 IOSB_iostate state = IOSTATE_failbit;
7823 unsigned short c = 0;
7825 TRACE("(%p %p)\n", istream, ch);
7827 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
7828 c = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(
7829 basic_istream_wchar_get_basic_ios(istream)));
7830 if(c != WEOF) {
7831 state = IOSTATE_goodbit;
7832 *ch = c;
7835 basic_istream_wchar_sentry_destroy(istream);
7837 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream),
7838 state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7839 return istream;
7842 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
7843 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
7844 DEFINE_THISCALL_WRAPPER(basic_iostream_char_ctor, 12)
7845 basic_iostream_char* __thiscall basic_iostream_char_ctor(basic_iostream_char *this, basic_streambuf_char *strbuf, MSVCP_bool virt_init)
7847 basic_ios_char *basic_ios;
7849 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
7851 if(virt_init) {
7852 this->base1.vbtable = basic_iostream_char_vbtable1;
7853 this->base2.vbtable = basic_iostream_char_vbtable2;
7854 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
7855 basic_ios_char_ctor(basic_ios);
7856 }else {
7857 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
7860 basic_ios->base.vtable = &MSVCP_basic_iostream_char_vtable;
7862 basic_istream_char_ctor(&this->base1, strbuf, FALSE, FALSE);
7863 basic_ostream_char_ctor_uninitialized(&this->base2, 0, FALSE, FALSE);
7864 return this;
7867 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
7868 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
7869 DEFINE_THISCALL_WRAPPER(basic_iostream_char_dtor, 4)
7870 void __thiscall basic_iostream_char_dtor(basic_iostream_char *this)
7872 TRACE("(%p)\n", this);
7873 basic_ostream_char_dtor(&this->base2);
7874 basic_istream_char_dtor(&this->base1);
7877 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
7878 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
7879 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vbase_dtor, 4)
7880 void __thiscall basic_iostream_char_vbase_dtor(basic_iostream_char *this)
7882 TRACE("(%p)\n", this);
7883 basic_iostream_char_dtor(this);
7884 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base1));
7887 DEFINE_THISCALL_WRAPPER(MSVCP_basic_iostream_char_vector_dtor, 8)
7888 basic_iostream_char* __thiscall MSVCP_basic_iostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
7890 basic_iostream_char *this = (basic_iostream_char *)((char*)base - basic_iostream_char_vbtable1[1] + basic_iostream_char_vbtable1[0]);
7892 TRACE("(%p %x)\n", this, flags);
7894 if(flags & 2) {
7895 /* we have an array, with the number of elements stored before the first object */
7896 int i, *ptr = (int *)this-1;
7898 for(i=*ptr-1; i>=0; i--)
7899 basic_iostream_char_vbase_dtor(this+i);
7900 MSVCRT_operator_delete(ptr);
7901 } else {
7902 basic_iostream_char_vbase_dtor(this);
7903 if(flags & 1)
7904 MSVCRT_operator_delete(this);
7907 return this;
7910 /* ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
7911 /* ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
7912 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_ctor, 12)
7913 basic_iostream_wchar* __thiscall basic_iostream_wchar_ctor(basic_iostream_wchar *this, basic_streambuf_wchar *strbuf, MSVCP_bool virt_init)
7915 basic_ios_wchar *basic_ios;
7917 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
7919 if(virt_init) {
7920 this->base1.vbtable = basic_iostream_wchar_vbtable1;
7921 this->base2.vbtable = basic_iostream_wchar_vbtable2;
7922 basic_ios = basic_istream_wchar_get_basic_ios(&this->base1);
7923 basic_ios_wchar_ctor(basic_ios);
7924 }else {
7925 basic_ios = basic_istream_wchar_get_basic_ios(&this->base1);
7928 basic_ios->base.vtable = &MSVCP_basic_iostream_wchar_vtable;
7930 basic_istream_wchar_ctor(&this->base1, strbuf, FALSE, FALSE);
7931 basic_ostream_wchar_ctor_uninitialized(&this->base2, 0, FALSE, FALSE);
7932 return this;
7935 /* ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
7936 /* ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
7937 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_dtor, 4)
7938 void __thiscall basic_iostream_wchar_dtor(basic_iostream_wchar *this)
7940 TRACE("(%p)\n", this);
7941 basic_ostream_wchar_dtor(&this->base2);
7942 basic_istream_wchar_dtor(&this->base1);
7945 /* ??_D?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
7946 /* ??_D?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
7947 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_vbase_dtor, 4)
7948 void __thiscall basic_iostream_wchar_vbase_dtor(basic_iostream_wchar *this)
7950 TRACE("(%p)\n", this);
7951 basic_iostream_wchar_dtor(this);
7952 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base1));
7955 DEFINE_THISCALL_WRAPPER(MSVCP_basic_iostream_wchar_vector_dtor, 8)
7956 basic_iostream_wchar* __thiscall MSVCP_basic_iostream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
7958 basic_iostream_wchar *this = (basic_iostream_wchar *)((char*)base - basic_iostream_wchar_vbtable1[1] + basic_iostream_wchar_vbtable1[0]);
7960 TRACE("(%p %x)\n", this, flags);
7962 if(flags & 2) {
7963 /* we have an array, with the number of elements stored before the first object */
7964 int i, *ptr = (int *)this-1;
7966 for(i=*ptr-1; i>=0; i--)
7967 basic_iostream_wchar_vbase_dtor(this+i);
7968 MSVCRT_operator_delete(ptr);
7969 } else {
7970 basic_iostream_wchar_vbase_dtor(this);
7971 if(flags & 1)
7972 MSVCRT_operator_delete(this);
7975 return this;
7978 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
7979 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
7980 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor, 8)
7981 basic_ofstream_char* __thiscall basic_ofstream_char_ctor(basic_ofstream_char *this, MSVCP_bool virt_init)
7983 basic_ios_char *basic_ios;
7985 TRACE("(%p %d)\n", this, virt_init);
7987 if(virt_init) {
7988 this->base.vbtable = basic_ofstream_char_vbtable;
7989 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
7990 basic_ios_char_ctor(basic_ios);
7991 }else {
7992 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
7995 basic_filebuf_char_ctor(&this->filebuf);
7996 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
7997 basic_ios->base.vtable = &MSVCP_basic_ofstream_char_vtable;
7998 return this;
8001 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
8002 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
8003 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_file, 12)
8004 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_file(
8005 basic_ofstream_char *this, FILE *file, MSVCP_bool virt_init)
8007 basic_ios_char *basic_ios;
8009 TRACE("(%p %p %d)\n", this, file, virt_init);
8011 if(virt_init) {
8012 this->base.vbtable = basic_ofstream_char_vbtable;
8013 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8014 basic_ios_char_ctor(basic_ios);
8015 }else {
8016 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8019 basic_filebuf_char_ctor_file(&this->filebuf, file);
8020 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
8021 basic_ios->base.vtable = &MSVCP_basic_ofstream_char_vtable;
8022 return this;
8025 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
8026 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
8027 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name, 20)
8028 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name(basic_ofstream_char *this,
8029 const char *name, int mode, int prot, MSVCP_bool virt_init)
8031 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
8033 basic_ofstream_char_ctor(this, virt_init);
8035 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
8036 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8037 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8039 return this;
8042 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
8043 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
8044 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
8045 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
8046 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name_wchar, 20)
8047 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name_wchar(basic_ofstream_char *this,
8048 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
8050 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
8052 basic_ofstream_char_ctor(this, virt_init);
8054 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
8055 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8056 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8058 return this;
8061 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
8062 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
8063 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_dtor, 4)
8064 void __thiscall basic_ofstream_char_dtor(basic_ofstream_char *this)
8066 TRACE("(%p)\n", this);
8068 basic_ostream_char_dtor(&this->base);
8069 basic_filebuf_char_dtor(&this->filebuf);
8072 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8073 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8074 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vbase_dtor, 4)
8075 void __thiscall basic_ofstream_char_vbase_dtor(basic_ofstream_char *this)
8077 TRACE("(%p)\n", this);
8079 basic_ofstream_char_dtor(this);
8080 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
8083 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ofstream_char_vector_dtor, 8)
8084 basic_ofstream_char* __thiscall MSVCP_basic_ofstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
8086 basic_ofstream_char *this = (basic_ofstream_char *)((char*)base - basic_ofstream_char_vbtable[1] + basic_ofstream_char_vbtable[0]);
8088 TRACE("(%p %x)\n", this, flags);
8090 if(flags & 2) {
8091 /* we have an array, with the number of elements stored before the first object */
8092 int i, *ptr = (int *)this-1;
8094 for(i=*ptr-1; i>=0; i--)
8095 basic_ofstream_char_vbase_dtor(this+i);
8096 MSVCRT_operator_delete(ptr);
8097 } else {
8098 basic_ofstream_char_vbase_dtor(this);
8099 if(flags & 1)
8100 MSVCRT_operator_delete(this);
8103 return this;
8106 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8107 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8108 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_close, 4)
8109 void __thiscall basic_ofstream_char_close(basic_ofstream_char *this)
8111 TRACE("(%p)\n", this);
8113 if(!basic_filebuf_char_close(&this->filebuf)) {
8114 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8115 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8119 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
8120 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
8121 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_is_open, 4)
8122 MSVCP_bool __thiscall basic_ofstream_char_is_open(const basic_ofstream_char *this)
8124 TRACE("(%p)\n", this);
8125 return basic_filebuf_char_is_open(&this->filebuf);
8128 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
8129 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
8130 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open, 16)
8131 void __thiscall basic_ofstream_char_open(basic_ofstream_char *this,
8132 const char *name, int mode, int prot)
8134 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
8136 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
8137 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8138 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8142 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
8143 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
8144 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_old, 12)
8145 void __thiscall basic_ofstream_char_open_old(basic_ofstream_char *this,
8146 const char *name, unsigned int mode)
8148 basic_ofstream_char_open(this, name, mode, _SH_DENYNO);
8151 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
8152 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
8153 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
8154 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
8155 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_wchar, 16)
8156 void __thiscall basic_ofstream_char_open_wchar(basic_ofstream_char *this,
8157 const wchar_t *name, int mode, int prot)
8159 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
8161 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
8162 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8163 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8167 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
8168 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
8169 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
8170 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
8171 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_wchar_old, 12)
8172 void __thiscall basic_ofstream_char_open_wchar_old(basic_ofstream_char *this,
8173 const wchar_t *name, unsigned int mode)
8175 basic_ofstream_char_open_wchar(this, name, mode, _SH_DENYNO);
8178 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
8179 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
8180 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_rdbuf, 4)
8181 basic_filebuf_char* __thiscall basic_ofstream_char_rdbuf(const basic_ofstream_char *this)
8183 TRACE("(%p)\n", this);
8184 return (basic_filebuf_char*)&this->filebuf;
8187 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
8188 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
8189 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor, 8)
8190 basic_ifstream_char* __thiscall basic_ifstream_char_ctor(basic_ifstream_char *this, MSVCP_bool virt_init)
8192 basic_ios_char *basic_ios;
8194 TRACE("(%p %d)\n", this, virt_init);
8196 if(virt_init) {
8197 this->base.vbtable = basic_ifstream_char_vbtable;
8198 basic_ios = basic_istream_char_get_basic_ios(&this->base);
8199 basic_ios_char_ctor(basic_ios);
8200 }else {
8201 basic_ios = basic_istream_char_get_basic_ios(&this->base);
8204 basic_filebuf_char_ctor(&this->filebuf);
8205 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
8206 basic_ios->base.vtable = &MSVCP_basic_ifstream_char_vtable;
8207 return this;
8210 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
8211 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
8212 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_file, 12)
8213 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_file(
8214 basic_ifstream_char *this, FILE *file, MSVCP_bool virt_init)
8216 basic_ios_char *basic_ios;
8218 TRACE("(%p %p %d)\n", this, file, virt_init);
8220 if(virt_init) {
8221 this->base.vbtable = basic_ifstream_char_vbtable;
8222 basic_ios = basic_istream_char_get_basic_ios(&this->base);
8223 basic_ios_char_ctor(basic_ios);
8224 }else {
8225 basic_ios = basic_istream_char_get_basic_ios(&this->base);
8228 basic_filebuf_char_ctor_file(&this->filebuf, file);
8229 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
8230 basic_ios->base.vtable = &MSVCP_basic_ifstream_char_vtable;
8231 return this;
8234 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
8235 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
8236 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name, 20)
8237 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name(basic_ifstream_char *this,
8238 const char *name, int mode, int prot, MSVCP_bool virt_init)
8240 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
8242 basic_ifstream_char_ctor(this, virt_init);
8244 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
8245 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
8246 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8248 return this;
8251 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
8252 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
8253 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
8254 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
8255 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name_wchar, 20)
8256 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name_wchar(basic_ifstream_char *this,
8257 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
8259 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
8261 basic_ifstream_char_ctor(this, virt_init);
8263 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
8264 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
8265 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8267 return this;
8270 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
8271 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
8272 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_dtor, 4)
8273 void __thiscall basic_ifstream_char_dtor(basic_ifstream_char *this)
8275 TRACE("(%p)\n", this);
8277 basic_istream_char_dtor(&this->base);
8278 basic_filebuf_char_dtor(&this->filebuf);
8281 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8282 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8283 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vbase_dtor, 4)
8284 void __thiscall basic_ifstream_char_vbase_dtor(basic_ifstream_char *this)
8286 TRACE("(%p)\n", this);
8288 basic_ifstream_char_dtor(this);
8289 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base));
8292 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ifstream_char_vector_dtor, 8)
8293 basic_ifstream_char* __thiscall MSVCP_basic_ifstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
8295 basic_ifstream_char *this = (basic_ifstream_char *)((char*)base - basic_ifstream_char_vbtable[1] + basic_ifstream_char_vbtable[0]);
8297 TRACE("(%p %x)\n", this, flags);
8299 if(flags & 2) {
8300 /* we have an array, with the number of elements stored before the first object */
8301 int i, *ptr = (int *)this-1;
8303 for(i=*ptr-1; i>=0; i--)
8304 basic_ifstream_char_vbase_dtor(this+i);
8305 MSVCRT_operator_delete(ptr);
8306 } else {
8307 basic_ifstream_char_vbase_dtor(this);
8308 if(flags & 1)
8309 MSVCRT_operator_delete(this);
8312 return this;
8315 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8316 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8317 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_close, 4)
8318 void __thiscall basic_ifstream_char_close(basic_ifstream_char *this)
8320 TRACE("(%p)\n", this);
8322 if(!basic_filebuf_char_close(&this->filebuf)) {
8323 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
8324 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8328 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
8329 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
8330 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_is_open, 4)
8331 MSVCP_bool __thiscall basic_ifstream_char_is_open(const basic_ifstream_char *this)
8333 TRACE("(%p)\n", this);
8334 return basic_filebuf_char_is_open(&this->filebuf);
8337 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
8338 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
8339 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open, 16)
8340 void __thiscall basic_ifstream_char_open(basic_ifstream_char *this,
8341 const char *name, int mode, int prot)
8343 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
8345 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
8346 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
8347 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8351 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
8352 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
8353 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_old, 12)
8354 void __thiscall basic_ifstream_char_open_old(basic_ifstream_char *this,
8355 const char *name, unsigned int mode)
8357 basic_ifstream_char_open(this, name, mode, _SH_DENYNO);
8360 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
8361 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
8362 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
8363 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
8364 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_wchar, 16)
8365 void __thiscall basic_ifstream_char_open_wchar(basic_ifstream_char *this,
8366 const wchar_t *name, int mode, int prot)
8368 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
8370 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
8371 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
8372 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8376 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
8377 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
8378 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
8379 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
8380 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_wchar_old, 12)
8381 void __thiscall basic_ifstream_char_open_wchar_old(basic_ifstream_char *this,
8382 const wchar_t *name, unsigned int mode)
8384 basic_ifstream_char_open_wchar(this, name, mode, _SH_DENYNO);
8387 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
8388 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
8389 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_rdbuf, 4)
8390 basic_filebuf_char* __thiscall basic_ifstream_char_rdbuf(const basic_ifstream_char *this)
8392 TRACE("(%p)\n", this);
8393 return (basic_filebuf_char*)&this->filebuf;
8396 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
8397 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
8398 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor, 8)
8399 basic_fstream_char* __thiscall basic_fstream_char_ctor(basic_fstream_char *this, MSVCP_bool virt_init)
8401 basic_ios_char *basic_ios;
8403 TRACE("(%p %d)\n", this, virt_init);
8405 if(virt_init) {
8406 this->base.base1.vbtable = basic_fstream_char_vbtable1;
8407 this->base.base2.vbtable = basic_fstream_char_vbtable2;
8408 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
8409 basic_ios_char_ctor(basic_ios);
8410 }else {
8411 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
8414 basic_filebuf_char_ctor(&this->filebuf);
8415 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
8416 basic_ios->base.vtable = &MSVCP_basic_fstream_char_vtable;
8417 return this;
8420 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
8421 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
8422 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_file, 12)
8423 basic_fstream_char* __thiscall basic_fstream_char_ctor_file(basic_fstream_char *this,
8424 FILE *file, MSVCP_bool virt_init)
8426 basic_ios_char *basic_ios;
8428 TRACE("(%p %p %d)\n", this, file, virt_init);
8430 if(virt_init) {
8431 this->base.base1.vbtable = basic_fstream_char_vbtable1;
8432 this->base.base2.vbtable = basic_fstream_char_vbtable2;
8433 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
8434 basic_ios_char_ctor(basic_ios);
8435 }else {
8436 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
8439 basic_filebuf_char_ctor_file(&this->filebuf, file);
8440 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
8441 basic_ios->base.vtable = &MSVCP_basic_fstream_char_vtable;
8442 return this;
8445 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
8446 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
8447 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name, 20)
8448 basic_fstream_char* __thiscall basic_fstream_char_ctor_name(basic_fstream_char *this,
8449 const char *name, int mode, int prot, MSVCP_bool virt_init)
8451 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
8453 basic_fstream_char_ctor(this, virt_init);
8455 if(!basic_filebuf_char_open(&this->filebuf, name, mode, prot)) {
8456 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
8457 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8459 return this;
8462 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
8463 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
8464 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
8465 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
8466 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name_wchar, 20)
8467 basic_fstream_char* __thiscall basic_fstream_char_ctor_name_wchar(basic_fstream_char *this,
8468 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
8470 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
8472 basic_fstream_char_ctor(this, virt_init);
8474 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode, prot)) {
8475 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
8476 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8478 return this;
8481 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
8482 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
8483 DEFINE_THISCALL_WRAPPER(basic_fstream_char_dtor, 4)
8484 void __thiscall basic_fstream_char_dtor(basic_fstream_char *this)
8486 TRACE("(%p)\n", this);
8488 basic_iostream_char_dtor(&this->base);
8489 basic_filebuf_char_dtor(&this->filebuf);
8492 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8493 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8494 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vbase_dtor, 4)
8495 void __thiscall basic_fstream_char_vbase_dtor(basic_fstream_char *this)
8497 TRACE("(%p)\n", this);
8499 basic_fstream_char_dtor(this);
8500 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
8503 DEFINE_THISCALL_WRAPPER(MSVCP_basic_fstream_char_vector_dtor, 8)
8504 basic_fstream_char* __thiscall MSVCP_basic_fstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
8506 basic_fstream_char *this = (basic_fstream_char *)((char*)base - basic_fstream_char_vbtable1[1] + basic_fstream_char_vbtable1[0]);
8508 TRACE("(%p %x)\n", this, flags);
8510 if(flags & 2) {
8511 /* we have an array, with the number of elements stored before the first object */
8512 int i, *ptr = (int *)this-1;
8514 for(i=*ptr-1; i>=0; i--)
8515 basic_fstream_char_vbase_dtor(this+i);
8516 MSVCRT_operator_delete(ptr);
8517 } else {
8518 basic_fstream_char_vbase_dtor(this);
8519 if(flags & 1)
8520 MSVCRT_operator_delete(this);
8523 return this;
8526 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
8527 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
8528 DEFINE_THISCALL_WRAPPER(basic_fstream_char_close, 4)
8529 void __thiscall basic_fstream_char_close(basic_fstream_char *this)
8531 TRACE("(%p)\n", this);
8533 if(!basic_filebuf_char_close(&this->filebuf)) {
8534 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
8535 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8539 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
8540 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
8541 DEFINE_THISCALL_WRAPPER(basic_fstream_char_is_open, 4)
8542 MSVCP_bool __thiscall basic_fstream_char_is_open(const basic_fstream_char *this)
8544 TRACE("(%p)\n", this);
8545 return basic_filebuf_char_is_open(&this->filebuf);
8548 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
8549 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
8550 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open, 16)
8551 void __thiscall basic_fstream_char_open(basic_fstream_char *this,
8552 const char *name, int mode, int prot)
8554 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
8556 if(!basic_filebuf_char_open(&this->filebuf, name, mode, prot)) {
8557 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
8558 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8562 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
8563 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
8564 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_old, 12)
8565 void __thiscall basic_fstream_char_open_old(basic_fstream_char *this,
8566 const char *name, unsigned int mode)
8568 basic_fstream_char_open(this, name, mode, _SH_DENYNO);
8571 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
8572 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
8573 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
8574 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
8575 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_wchar, 16)
8576 void __thiscall basic_fstream_char_open_wchar(basic_fstream_char *this,
8577 const wchar_t *name, int mode, int prot)
8579 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
8581 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode, prot)) {
8582 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
8583 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
8587 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
8588 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
8589 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
8590 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
8591 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_wchar_old, 12)
8592 void __thiscall basic_fstream_char_open_wchar_old(basic_fstream_char *this,
8593 const wchar_t *name, unsigned int mode)
8595 basic_fstream_char_open_wchar(this, name, mode, _SH_DENYNO);
8598 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
8599 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
8600 DEFINE_THISCALL_WRAPPER(basic_fstream_char_rdbuf, 4)
8601 basic_filebuf_char* __thiscall basic_fstream_char_rdbuf(const basic_fstream_char *this)
8603 TRACE("(%p)\n", this);
8604 return (basic_filebuf_char*)&this->filebuf;
8607 /* ??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 */
8608 /* ??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 */
8609 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_str, 16)
8610 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_str(basic_ostringstream_char *this,
8611 const basic_string_char *str, int mode, MSVCP_bool virt_init)
8613 basic_ios_char *basic_ios;
8615 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
8617 if(virt_init) {
8618 this->base.vbtable = basic_ostringstream_char_vbtable;
8619 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8620 basic_ios_char_ctor(basic_ios);
8621 }else {
8622 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8625 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
8626 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
8627 basic_ios->base.vtable = &MSVCP_basic_ostringstream_char_vtable;
8628 return this;
8631 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
8632 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
8633 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_mode, 12)
8634 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_mode(
8635 basic_ostringstream_char *this, int mode, MSVCP_bool virt_init)
8637 basic_ios_char *basic_ios;
8639 TRACE("(%p %d %d)\n", this, mode, virt_init);
8641 if(virt_init) {
8642 this->base.vbtable = basic_ostringstream_char_vbtable;
8643 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8644 basic_ios_char_ctor(basic_ios);
8645 }else {
8646 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
8649 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_out);
8650 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
8651 basic_ios->base.vtable = &MSVCP_basic_ostringstream_char_vtable;
8652 return this;
8655 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
8656 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
8657 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor, 8)
8658 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor(
8659 basic_ostringstream_char *this, MSVCP_bool virt_init)
8661 return basic_ostringstream_char_ctor_mode(this, 0, virt_init);
8664 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
8665 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
8666 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_dtor, 4)
8667 void __thiscall basic_ostringstream_char_dtor(basic_ostringstream_char *this)
8669 TRACE("(%p)\n", this);
8671 basic_stringbuf_char_dtor(&this->strbuf);
8672 basic_ostream_char_dtor(&this->base);
8675 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
8676 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
8677 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vbase_dtor, 4)
8678 void __thiscall basic_ostringstream_char_vbase_dtor(basic_ostringstream_char *this)
8680 TRACE("(%p)\n", this);
8682 basic_ostringstream_char_dtor(this);
8683 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
8686 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostringstream_char_vector_dtor, 8)
8687 basic_ostringstream_char* __thiscall MSVCP_basic_ostringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
8689 basic_ostringstream_char *this = (basic_ostringstream_char *)((char*)base - basic_ostringstream_char_vbtable[1] + basic_ostringstream_char_vbtable[0]);
8691 TRACE("(%p %x)\n", this, flags);
8693 if(flags & 2) {
8694 /* we have an array, with the number of elements stored before the first object */
8695 int i, *ptr = (int *)this-1;
8697 for(i=*ptr-1; i>=0; i--)
8698 basic_ostringstream_char_vbase_dtor(this+i);
8699 MSVCRT_operator_delete(ptr);
8700 } else {
8701 basic_ostringstream_char_vbase_dtor(this);
8702 if(flags & 1)
8703 MSVCRT_operator_delete(this);
8706 return this;
8709 /* ?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 */
8710 /* ?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 */
8711 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_rdbuf, 4)
8712 basic_stringbuf_char* __thiscall basic_ostringstream_char_rdbuf(const basic_ostringstream_char *this)
8714 TRACE("(%p)\n", this);
8715 return (basic_stringbuf_char*)&this->strbuf;
8718 /* ?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 */
8719 /* ?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 */
8720 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_set, 8)
8721 void __thiscall basic_ostringstream_char_str_set(basic_ostringstream_char *this, const basic_string_char *str)
8723 TRACE("(%p %p)\n", this, str);
8724 basic_stringbuf_char_str_set(&this->strbuf, str);
8727 /* ?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 */
8728 /* ?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 */
8729 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_get, 8)
8730 basic_string_char* __thiscall basic_ostringstream_char_str_get(const basic_ostringstream_char *this, basic_string_char *ret)
8732 TRACE("(%p %p)\n", this, ret);
8733 return basic_stringbuf_char_str_get(&this->strbuf, ret);
8736 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@H@Z */
8737 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@H@Z */
8738 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor_str, 16)
8739 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_str(basic_ostringstream_wchar *this,
8740 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
8742 basic_ios_wchar *basic_ios;
8744 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
8746 if(virt_init) {
8747 this->base.vbtable = basic_ostringstream_wchar_vbtable;
8748 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
8749 basic_ios_wchar_ctor(basic_ios);
8750 }else {
8751 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
8754 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
8755 basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
8756 basic_ios->base.vtable = &MSVCP_basic_ostringstream_wchar_vtable;
8757 return this;
8760 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
8761 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
8762 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor_mode, 12)
8763 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_mode(
8764 basic_ostringstream_wchar *this, int mode, MSVCP_bool virt_init)
8766 basic_ios_wchar *basic_ios;
8768 TRACE("(%p %d %d)\n", this, mode, virt_init);
8770 if(virt_init) {
8771 this->base.vbtable = basic_ostringstream_wchar_vbtable;
8772 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
8773 basic_ios_wchar_ctor(basic_ios);
8774 }else {
8775 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
8778 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_out);
8779 basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
8780 basic_ios->base.vtable = &MSVCP_basic_ostringstream_wchar_vtable;
8781 return this;
8784 /* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
8785 /* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
8786 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor, 8)
8787 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor(
8788 basic_ostringstream_wchar *this, MSVCP_bool virt_init)
8790 return basic_ostringstream_wchar_ctor_mode(this, 0, virt_init);
8793 /* ??1?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
8794 /* ??1?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
8795 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_dtor, 4)
8796 void __thiscall basic_ostringstream_wchar_dtor(basic_ostringstream_wchar *this)
8798 TRACE("(%p)\n", this);
8800 basic_stringbuf_wchar_dtor(&this->strbuf);
8801 basic_ostream_wchar_dtor(&this->base);
8804 /* ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
8805 /* ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
8806 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_vbase_dtor, 4)
8807 void __thiscall basic_ostringstream_wchar_vbase_dtor(basic_ostringstream_wchar *this)
8809 TRACE("(%p)\n", this);
8811 basic_ostringstream_wchar_dtor(this);
8812 basic_ios_wchar_dtor(basic_ostream_wchar_get_basic_ios(&this->base));
8815 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostringstream_wchar_vector_dtor, 8)
8816 basic_ostringstream_wchar* __thiscall MSVCP_basic_ostringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
8818 basic_ostringstream_wchar *this = (basic_ostringstream_wchar *)((char*)base - basic_ostringstream_wchar_vbtable[1] + basic_ostringstream_wchar_vbtable[0]);
8820 TRACE("(%p %x)\n", this, flags);
8822 if(flags & 2) {
8823 /* we have an array, with the number of elements stored before the first object */
8824 int i, *ptr = (int *)this-1;
8826 for(i=*ptr-1; i>=0; i--)
8827 basic_ostringstream_wchar_vbase_dtor(this+i);
8828 MSVCRT_operator_delete(ptr);
8829 } else {
8830 basic_ostringstream_wchar_vbase_dtor(this);
8831 if(flags & 1)
8832 MSVCRT_operator_delete(this);
8835 return this;
8838 /* ?rdbuf@?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPAV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
8839 /* ?rdbuf@?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEAV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
8840 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_rdbuf, 4)
8841 basic_stringbuf_wchar* __thiscall basic_ostringstream_wchar_rdbuf(const basic_ostringstream_wchar *this)
8843 TRACE("(%p)\n", this);
8844 return (basic_stringbuf_wchar*)&this->strbuf;
8847 /* ?str@?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
8848 /* ?str@?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
8849 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_str_set, 8)
8850 void __thiscall basic_ostringstream_wchar_str_set(basic_ostringstream_wchar *this, const basic_string_wchar *str)
8852 TRACE("(%p %p)\n", this, str);
8853 basic_stringbuf_wchar_str_set(&this->strbuf, str);
8856 /* ?str@?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
8857 /* ?str@?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
8858 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_str_get, 8)
8859 basic_string_wchar* __thiscall basic_ostringstream_wchar_str_get(const basic_ostringstream_wchar *this, basic_string_wchar *ret)
8861 TRACE("(%p %p)\n", this, ret);
8862 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
8865 /* ??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 */
8866 /* ??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 */
8867 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_str, 16)
8868 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_str(basic_istringstream_char *this,
8869 const basic_string_char *str, int mode, MSVCP_bool virt_init)
8871 basic_ios_char *basic_ios;
8873 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
8875 if(virt_init) {
8876 this->base.vbtable = basic_istringstream_char_vbtable;
8877 basic_ios = basic_istream_char_get_basic_ios(&this->base);
8878 basic_ios_char_ctor(basic_ios);
8879 }else {
8880 basic_ios = basic_istream_char_get_basic_ios(&this->base);
8883 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
8884 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
8885 basic_ios->base.vtable = &MSVCP_basic_istringstream_char_vtable;
8886 return this;
8889 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
8890 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
8891 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_mode, 12)
8892 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_mode(
8893 basic_istringstream_char *this, int mode, MSVCP_bool virt_init)
8895 basic_ios_char *basic_ios;
8897 TRACE("(%p %d %d)\n", this, mode, virt_init);
8899 if(virt_init) {
8900 this->base.vbtable = basic_istringstream_char_vbtable;
8901 basic_ios = basic_istream_char_get_basic_ios(&this->base);
8902 basic_ios_char_ctor(basic_ios);
8903 }else {
8904 basic_ios = basic_istream_char_get_basic_ios(&this->base);
8907 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_in);
8908 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
8909 basic_ios->base.vtable = &MSVCP_basic_istringstream_char_vtable;
8910 return this;
8913 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
8914 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
8915 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor, 8)
8916 basic_istringstream_char* __thiscall basic_istringstream_char_ctor(
8917 basic_istringstream_char *this, MSVCP_bool virt_init)
8919 return basic_istringstream_char_ctor_mode(this, 0, virt_init);
8922 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
8923 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
8924 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_dtor, 4)
8925 void __thiscall basic_istringstream_char_dtor(basic_istringstream_char *this)
8927 TRACE("(%p)\n", this);
8929 basic_stringbuf_char_dtor(&this->strbuf);
8930 basic_istream_char_dtor(&this->base);
8933 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
8934 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
8935 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vbase_dtor, 4)
8936 void __thiscall basic_istringstream_char_vbase_dtor(basic_istringstream_char *this)
8938 TRACE("(%p)\n", this);
8940 basic_istringstream_char_dtor(this);
8941 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base));
8944 DEFINE_THISCALL_WRAPPER(MSVCP_basic_istringstream_char_vector_dtor, 8)
8945 basic_istringstream_char* __thiscall MSVCP_basic_istringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
8947 basic_istringstream_char *this = (basic_istringstream_char *)((char*)base - basic_istringstream_char_vbtable[1] + basic_istringstream_char_vbtable[0]);
8949 TRACE("(%p %x)\n", this, flags);
8951 if(flags & 2) {
8952 /* we have an array, with the number of elements stored before the first object */
8953 int i, *ptr = (int *)this-1;
8955 for(i=*ptr-1; i>=0; i--)
8956 basic_istringstream_char_vbase_dtor(this+i);
8957 MSVCRT_operator_delete(ptr);
8958 } else {
8959 basic_istringstream_char_vbase_dtor(this);
8960 if(flags & 1)
8961 MSVCRT_operator_delete(this);
8964 return this;
8967 /* ?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 */
8968 /* ?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 */
8969 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_rdbuf, 4)
8970 basic_stringbuf_char* __thiscall basic_istringstream_char_rdbuf(const basic_istringstream_char *this)
8972 TRACE("(%p)\n", this);
8973 return (basic_stringbuf_char*)&this->strbuf;
8976 /* ?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 */
8977 /* ?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 */
8978 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_set, 8)
8979 void __thiscall basic_istringstream_char_str_set(basic_istringstream_char *this, const basic_string_char *str)
8981 TRACE("(%p %p)\n", this, str);
8982 basic_stringbuf_char_str_set(&this->strbuf, str);
8985 /* ?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 */
8986 /* ?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 */
8987 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_get, 8)
8988 basic_string_char* __thiscall basic_istringstream_char_str_get(const basic_istringstream_char *this, basic_string_char *ret)
8990 TRACE("(%p %p)\n", this, ret);
8991 return basic_stringbuf_char_str_get(&this->strbuf, ret);
8994 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@H@Z */
8995 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@H@Z */
8996 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor_str, 16)
8997 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_str(basic_istringstream_wchar *this,
8998 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
9000 basic_ios_wchar *basic_ios;
9002 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
9004 if(virt_init) {
9005 this->base.vbtable = basic_istringstream_wchar_vbtable;
9006 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
9007 basic_ios_wchar_ctor(basic_ios);
9008 }else {
9009 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
9012 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
9013 basic_istream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
9014 basic_ios->base.vtable = &MSVCP_basic_istringstream_wchar_vtable;
9015 return this;
9018 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
9019 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
9020 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor_mode, 12)
9021 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_mode(
9022 basic_istringstream_wchar *this, int mode, MSVCP_bool virt_init)
9024 basic_ios_wchar *basic_ios;
9026 TRACE("(%p %d %d)\n", this, mode, virt_init);
9028 if(virt_init) {
9029 this->base.vbtable = basic_istringstream_wchar_vbtable;
9030 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
9031 basic_ios_wchar_ctor(basic_ios);
9032 }else {
9033 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
9036 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_in);
9037 basic_istream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
9038 basic_ios->base.vtable = &MSVCP_basic_istringstream_wchar_vtable;
9039 return this;
9042 /* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
9043 /* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
9044 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor, 8)
9045 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor(
9046 basic_istringstream_wchar *this, MSVCP_bool virt_init)
9048 return basic_istringstream_wchar_ctor_mode(this, 0, virt_init);
9051 /* ??1?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
9052 /* ??1?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
9053 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_dtor, 4)
9054 void __thiscall basic_istringstream_wchar_dtor(basic_istringstream_wchar *this)
9056 TRACE("(%p)\n", this);
9058 basic_stringbuf_wchar_dtor(&this->strbuf);
9059 basic_istream_wchar_dtor(&this->base);
9062 /* ??_D?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
9063 /* ??_D?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
9064 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_vbase_dtor, 4)
9065 void __thiscall basic_istringstream_wchar_vbase_dtor(basic_istringstream_wchar *this)
9067 TRACE("(%p)\n", this);
9069 basic_istringstream_wchar_dtor(this);
9070 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base));
9073 DEFINE_THISCALL_WRAPPER(MSVCP_basic_istringstream_wchar_vector_dtor, 8)
9074 basic_istringstream_wchar* __thiscall MSVCP_basic_istringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
9076 basic_istringstream_wchar *this = (basic_istringstream_wchar *)((char*)base - basic_istringstream_wchar_vbtable[1] + basic_istringstream_wchar_vbtable[0]);
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 i, *ptr = (int *)this-1;
9084 for(i=*ptr-1; i>=0; i--)
9085 basic_istringstream_wchar_vbase_dtor(this+i);
9086 MSVCRT_operator_delete(ptr);
9087 } else {
9088 basic_istringstream_wchar_vbase_dtor(this);
9089 if(flags & 1)
9090 MSVCRT_operator_delete(this);
9093 return this;
9096 /* ?rdbuf@?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPAV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
9097 /* ?rdbuf@?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEAV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
9098 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_rdbuf, 4)
9099 basic_stringbuf_wchar* __thiscall basic_istringstream_wchar_rdbuf(const basic_istringstream_wchar *this)
9101 TRACE("(%p)\n", this);
9102 return (basic_stringbuf_wchar*)&this->strbuf;
9105 /* ?str@?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
9106 /* ?str@?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
9107 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_str_set, 8)
9108 void __thiscall basic_istringstream_wchar_str_set(basic_istringstream_wchar *this, const basic_string_wchar *str)
9110 TRACE("(%p %p)\n", this, str);
9111 basic_stringbuf_wchar_str_set(&this->strbuf, str);
9114 /* ?str@?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
9115 /* ?str@?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
9116 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_str_get, 8)
9117 basic_string_wchar* __thiscall basic_istringstream_wchar_str_get(const basic_istringstream_wchar *this, basic_string_wchar *ret)
9119 TRACE("(%p %p)\n", this, ret);
9120 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
9123 /* ??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 */
9124 /* ??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 */
9125 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_str, 16)
9126 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_str(basic_stringstream_char *this,
9127 const basic_string_char *str, int mode, MSVCP_bool virt_init)
9129 basic_ios_char *basic_ios;
9131 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
9133 if(virt_init) {
9134 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
9135 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
9136 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
9137 basic_ios_char_ctor(basic_ios);
9138 }else {
9139 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
9142 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode);
9143 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
9144 basic_ios->base.vtable = &MSVCP_basic_stringstream_char_vtable;
9145 return this;
9148 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
9149 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
9150 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_mode, 12)
9151 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_mode(
9152 basic_stringstream_char *this, int mode, MSVCP_bool virt_init)
9154 basic_ios_char *basic_ios;
9156 TRACE("(%p %d %d)\n", this, mode, virt_init);
9158 if(virt_init) {
9159 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
9160 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
9161 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
9162 basic_ios_char_ctor(basic_ios);
9163 }else {
9164 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
9167 basic_stringbuf_char_ctor_mode(&this->strbuf, mode);
9168 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
9169 basic_ios->base.vtable = &MSVCP_basic_stringstream_char_vtable;
9170 return this;
9173 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
9174 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
9175 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor, 8)
9176 basic_stringstream_char* __thiscall basic_stringstream_char_ctor(
9177 basic_stringstream_char *this, MSVCP_bool virt_init)
9179 return basic_stringstream_char_ctor_mode(
9180 this, OPENMODE_out|OPENMODE_in, virt_init);
9183 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
9184 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
9185 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_dtor, 4)
9186 void __thiscall basic_stringstream_char_dtor(basic_stringstream_char *this)
9188 TRACE("(%p)\n", this);
9190 basic_iostream_char_dtor(&this->base);
9191 basic_stringbuf_char_dtor(&this->strbuf);
9194 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
9195 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
9196 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vbase_dtor, 4)
9197 void __thiscall basic_stringstream_char_vbase_dtor(basic_stringstream_char *this)
9199 TRACE("(%p)\n", this);
9201 basic_stringstream_char_dtor(this);
9202 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
9205 DEFINE_THISCALL_WRAPPER(MSVCP_basic_stringstream_char_vector_dtor, 8)
9206 basic_stringstream_char* __thiscall MSVCP_basic_stringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
9208 basic_stringstream_char *this = (basic_stringstream_char *)((char*)base - basic_stringstream_char_vbtable1[1] + basic_stringstream_char_vbtable1[0]);
9210 TRACE("(%p %x)\n", this, flags);
9212 if(flags & 2) {
9213 /* we have an array, with the number of elements stored before the first object */
9214 int i, *ptr = (int *)this-1;
9216 for(i=*ptr-1; i>=0; i--)
9217 basic_stringstream_char_vbase_dtor(this+i);
9218 MSVCRT_operator_delete(ptr);
9219 } else {
9220 basic_stringstream_char_vbase_dtor(this);
9221 if(flags & 1)
9222 MSVCRT_operator_delete(this);
9225 return this;
9228 /* ?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 */
9229 /* ?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 */
9230 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_rdbuf, 4)
9231 basic_stringbuf_char* __thiscall basic_stringstream_char_rdbuf(const basic_stringstream_char *this)
9233 TRACE("(%p)\n", this);
9234 return (basic_stringbuf_char*)&this->strbuf;
9237 /* ?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 */
9238 /* ?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 */
9239 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_set, 8)
9240 void __thiscall basic_stringstream_char_str_set(basic_stringstream_char *this, const basic_string_char *str)
9242 TRACE("(%p %p)\n", this, str);
9243 basic_stringbuf_char_str_set(&this->strbuf, str);
9246 /* ?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 */
9247 /* ?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 */
9248 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_get, 8)
9249 basic_string_char* __thiscall basic_stringstream_char_str_get(const basic_stringstream_char *this, basic_string_char *ret)
9251 TRACE("(%p %p)\n", this, ret);
9252 return basic_stringbuf_char_str_get(&this->strbuf, ret);
9255 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@H@Z */
9256 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@AEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@1@H@Z */
9257 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor_str, 16)
9258 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_str(basic_stringstream_wchar *this,
9259 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
9261 basic_ios_wchar *basic_ios;
9263 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
9265 if(virt_init) {
9266 this->base.base1.vbtable = basic_stringstream_wchar_vbtable1;
9267 this->base.base2.vbtable = basic_stringstream_wchar_vbtable2;
9268 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
9269 basic_ios_wchar_ctor(basic_ios);
9270 }else {
9271 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
9274 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode);
9275 basic_iostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE);
9276 basic_ios->base.vtable = &MSVCP_basic_stringstream_wchar_vtable;
9277 return this;
9280 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
9281 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
9282 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor_mode, 12)
9283 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_mode(
9284 basic_stringstream_wchar *this, int mode, MSVCP_bool virt_init)
9286 basic_ios_wchar *basic_ios;
9288 TRACE("(%p %d %d)\n", this, mode, virt_init);
9290 if(virt_init) {
9291 this->base.base1.vbtable = basic_stringstream_wchar_vbtable1;
9292 this->base.base2.vbtable = basic_stringstream_wchar_vbtable2;
9293 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
9294 basic_ios_wchar_ctor(basic_ios);
9295 }else {
9296 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
9299 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode);
9300 basic_iostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE);
9301 basic_ios->base.vtable = &MSVCP_basic_stringstream_wchar_vtable;
9302 return this;
9305 /* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
9306 /* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
9307 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor, 8)
9308 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor(
9309 basic_stringstream_wchar *this, MSVCP_bool virt_init)
9311 return basic_stringstream_wchar_ctor_mode(
9312 this, OPENMODE_out|OPENMODE_in, virt_init);
9315 /* ??1?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
9316 /* ??1?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
9317 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_dtor, 4)
9318 void __thiscall basic_stringstream_wchar_dtor(basic_stringstream_wchar *this)
9320 TRACE("(%p)\n", this);
9322 basic_iostream_wchar_dtor(&this->base);
9323 basic_stringbuf_wchar_dtor(&this->strbuf);
9326 /* ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
9327 /* ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
9328 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_vbase_dtor, 4)
9329 void __thiscall basic_stringstream_wchar_vbase_dtor(basic_stringstream_wchar *this)
9331 TRACE("(%p)\n", this);
9333 basic_stringstream_wchar_dtor(this);
9334 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base.base1));
9337 DEFINE_THISCALL_WRAPPER(MSVCP_basic_stringstream_wchar_vector_dtor, 8)
9338 basic_stringstream_wchar* __thiscall MSVCP_basic_stringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
9340 basic_stringstream_wchar *this = (basic_stringstream_wchar *)((char*)base - basic_stringstream_wchar_vbtable1[1] + basic_stringstream_wchar_vbtable1[0]);
9342 TRACE("(%p %x)\n", this, flags);
9344 if(flags & 2) {
9345 /* we have an array, with the number of elements stored before the first object */
9346 int i, *ptr = (int *)this-1;
9348 for(i=*ptr-1; i>=0; i--)
9349 basic_stringstream_wchar_vbase_dtor(this+i);
9350 MSVCRT_operator_delete(ptr);
9351 } else {
9352 basic_stringstream_wchar_vbase_dtor(this);
9353 if(flags & 1)
9354 MSVCRT_operator_delete(this);
9357 return this;
9360 /* ?rdbuf@?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPAV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
9361 /* ?rdbuf@?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEAV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
9362 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_rdbuf, 4)
9363 basic_stringbuf_wchar* __thiscall basic_stringstream_wchar_rdbuf(const basic_stringstream_wchar *this)
9365 TRACE("(%p)\n", this);
9366 return (basic_stringbuf_wchar*)&this->strbuf;
9369 /* ?str@?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
9370 /* ?str@?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
9371 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_str_set, 8)
9372 void __thiscall basic_stringstream_wchar_str_set(basic_stringstream_wchar *this, const basic_string_wchar *str)
9374 TRACE("(%p %p)\n", this, str);
9375 basic_stringbuf_wchar_str_set(&this->strbuf, str);
9378 /* ?str@?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
9379 /* ?str@?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
9380 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_str_get, 8)
9381 basic_string_wchar* __thiscall basic_stringstream_wchar_str_get(const basic_stringstream_wchar *this, basic_string_wchar *ret)
9383 TRACE("(%p %p)\n", this, ret);
9384 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
9387 static void __cdecl setprecision_func(ios_base *base, streamsize prec)
9389 ios_base_precision_set(base, prec);
9392 /* ?setprecision@std@@YA?AU?$_Smanip@H@1@H@Z */
9393 /* ?setprecision@std@@YA?AU?$_Smanip@_J@1@_J@Z */
9394 manip_streamsize* __cdecl setprecision(manip_streamsize *ret, streamsize prec)
9396 TRACE("(%p %ld)\n", ret, prec);
9398 ret->pfunc = setprecision_func;
9399 ret->arg = prec;
9400 return ret;
9403 static void __cdecl setw_func(ios_base *base, streamsize width)
9405 ios_base_width_set(base, width);
9408 /* ?setw@std@@YA?AU?$_Smanip@H@1@H@Z */
9409 /* ?setw@std@@YA?AU?$_Smanip@_J@1@_J@Z */
9410 manip_streamsize* __cdecl setw(manip_streamsize *ret, streamsize width)
9412 TRACE("(%p %ld)\n", ret, width);
9414 ret->pfunc = setw_func;
9415 ret->arg = width;
9416 return ret;
9419 static basic_filebuf_char filebuf_stdin;
9420 /* ?cin@std@@3V?$basic_istream@DU?$char_traits@D@std@@@1@A */
9421 struct {
9422 basic_istream_char obj;
9423 basic_ios_char vbase;
9424 } cin = { { 0 } };
9425 /* ?_Ptr_cin@std@@3PAV?$basic_istream@DU?$char_traits@D@std@@@1@A */
9426 /* ?_Ptr_cin@std@@3PEAV?$basic_istream@DU?$char_traits@D@std@@@1@EA */
9427 basic_istream_char *_Ptr_cin = &cin.obj;
9429 static basic_filebuf_char filebuf_stdout;
9430 /* ?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
9431 struct {
9432 basic_ostream_char obj;
9433 basic_ios_char vbase;
9434 } cout = { { 0 } };
9435 /* ?_Ptr_cout@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
9436 /* ?_Ptr_cout@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
9437 basic_ostream_char *_Ptr_cout = &cout.obj;
9439 static basic_filebuf_char filebuf_stderr;
9440 /* ?cerr@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
9441 struct {
9442 basic_ostream_char obj;
9443 basic_ios_char vbase;
9444 } cerr = { { 0 } };
9445 /* ?_Ptr_cerr@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
9446 /* ?_Ptr_cerr@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
9447 basic_ostream_char *_Ptr_cerr = &cerr.obj;
9449 static basic_filebuf_char filebuf_log;
9450 /* ?clog@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
9451 struct {
9452 basic_ostream_char obj;
9453 basic_ios_char vbase;
9454 } clog = { { 0 } };
9455 /* ?_Ptr_clog@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
9456 /* ?_Ptr_clog@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
9457 basic_ostream_char *_Ptr_clog = &clog.obj;
9459 void init_io(void)
9461 basic_filebuf_char_ctor_file(&filebuf_stdin, stdin);
9462 basic_istream_char_ctor(&cin.obj, &filebuf_stdin.base, FALSE/*FIXME*/, TRUE);
9464 basic_filebuf_char_ctor_file(&filebuf_stdout, stdout);
9465 basic_ostream_char_ctor(&cout.obj, &filebuf_stdout.base, FALSE/*FIXME*/, TRUE);
9467 basic_filebuf_char_ctor_file(&filebuf_stderr, stderr);
9468 basic_ostream_char_ctor(&cerr.obj, &filebuf_stderr.base, FALSE/*FIXME*/, TRUE);
9470 basic_filebuf_char_ctor_file(&filebuf_log, stderr);
9471 basic_ostream_char_ctor(&clog.obj, &filebuf_log.base, FALSE/*FIXME*/, TRUE);
9474 void free_io(void)
9476 basic_istream_char_dtor(&cin.obj);
9477 basic_filebuf_char_dtor(&filebuf_stdin);
9479 basic_ostream_char_dtor(&cout.obj);
9480 basic_filebuf_char_dtor(&filebuf_stdout);
9482 basic_ostream_char_dtor(&cerr.obj);
9483 basic_filebuf_char_dtor(&filebuf_stderr);
9485 basic_ostream_char_dtor(&clog.obj);
9486 basic_filebuf_char_dtor(&filebuf_log);