msvcp100: Fixed 64-bit variables alignment.
[wine/multimedia.git] / dlls / msvcp100 / ios.c
blob544523168a4b361bda0c1014a9f84b617d4fdbaf
1 /*
2 * Copyright 2011 Piotr Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #include "config.h"
21 #include <stdarg.h>
22 #include <stdio.h>
23 #include <limits.h>
24 #include <share.h>
26 #include "msvcp.h"
27 #include "windef.h"
28 #include "winbase.h"
29 #include "wine/debug.h"
30 WINE_DEFAULT_DEBUG_CHANNEL(msvcp);
32 /* ?_Index@ios_base@std@@0HA */
33 int ios_base_Index = 0;
34 /* ?_Sync@ios_base@std@@0_NA */
35 MSVCP_bool ios_base_Sync = FALSE;
37 typedef struct {
38 streamoff off;
39 __int64 DECLSPEC_ALIGN(8) pos;
40 int state;
41 } fpos_int;
43 static inline const char* debugstr_fpos_int(fpos_int *fpos)
45 return wine_dbg_sprintf("fpos(%s %s %d)", wine_dbgstr_longlong(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 struct {
70 basic_streambuf_wchar base;
71 codecvt_wchar *cvt;
72 wchar_t putback;
73 MSVCP_bool wrotesome;
74 int state;
75 MSVCP_bool close;
76 FILE *file;
77 } basic_filebuf_wchar;
79 typedef enum {
80 STRINGBUF_allocated = 1,
81 STRINGBUF_no_write = 2,
82 STRINGBUF_no_read = 4,
83 STRINGBUF_append = 8,
84 STRINGBUF_at_end = 16
85 } basic_stringbuf_state;
87 typedef struct {
88 basic_streambuf_char base;
89 char *seekhigh;
90 int state;
91 char allocator; /* empty struct */
92 } basic_stringbuf_char;
94 typedef struct {
95 basic_streambuf_wchar base;
96 wchar_t *seekhigh;
97 int state;
98 char allocator; /* empty struct */
99 } basic_stringbuf_wchar;
101 typedef struct {
102 ios_base base;
103 basic_streambuf_char *strbuf;
104 struct _basic_ostream_char *stream;
105 char fillch;
106 } basic_ios_char;
108 typedef struct {
109 ios_base base;
110 basic_streambuf_wchar *strbuf;
111 struct _basic_ostream_wchar *stream;
112 wchar_t fillch;
113 } basic_ios_wchar;
115 typedef struct _basic_ostream_char {
116 const int *vbtable;
117 /* virtual inheritance
118 * basic_ios_char basic_ios;
120 } basic_ostream_char;
122 typedef struct _basic_ostream_wchar {
123 const int *vbtable;
124 /* virtual inheritance
125 * basic_ios_wchar basic_ios;
127 } basic_ostream_wchar;
129 typedef struct {
130 const int *vbtable;
131 streamsize count;
132 /* virtual inheritance
133 * basic_ios_char basic_ios;
135 } basic_istream_char;
137 typedef struct {
138 const int *vbtable;
139 streamsize count;
140 /* virtual inheritance
141 * basic_ios_wchar basic_ios;
143 } basic_istream_wchar;
145 typedef struct {
146 basic_istream_char base1;
147 basic_ostream_char base2;
148 /* virtual inheritance
149 * basic_ios_char basic_ios;
151 } basic_iostream_char;
153 typedef struct {
154 basic_istream_wchar base1;
155 basic_ostream_wchar base2;
156 /* virtual inheritance
157 * basic_ios_wchar basic_ios;
159 } basic_iostream_wchar;
161 typedef struct {
162 basic_ostream_char base;
163 basic_filebuf_char filebuf;
164 /* virtual inheritance
165 * basic_ios_char basic_ios;
167 } basic_ofstream_char;
169 typedef struct {
170 basic_ostream_wchar base;
171 basic_filebuf_wchar filebuf;
172 /* virtual inheritance
173 * basic_ios_wchar basic_ios;
175 } basic_ofstream_wchar;
177 typedef struct {
178 basic_istream_char base;
179 basic_filebuf_char filebuf;
180 /* virtual inheritance
181 * basic_ios_char basic_ios;
183 } basic_ifstream_char;
185 typedef struct {
186 basic_istream_wchar base;
187 basic_filebuf_wchar filebuf;
188 /* virtual inheritance
189 * basic_ios_wchar basic_ios;
191 } basic_ifstream_wchar;
193 typedef struct {
194 basic_iostream_char base;
195 basic_filebuf_char filebuf;
196 /* virtual inheritance
197 * basic_ios_char basic_ios;
199 } basic_fstream_char;
201 typedef struct {
202 basic_iostream_wchar base;
203 basic_filebuf_wchar filebuf;
204 /* virtual inheritance
205 * basic_ios_char basic_ios;
207 } basic_fstream_wchar;
209 typedef struct {
210 basic_ostream_char base;
211 basic_stringbuf_char strbuf;
212 /* virtual inheritance
213 * basic_ios_char basic_ios;
215 } basic_ostringstream_char;
217 typedef struct {
218 basic_ostream_wchar base;
219 basic_stringbuf_wchar strbuf;
220 /* virtual inheritance
221 * basic_ios_wchar basic_ios;
223 } basic_ostringstream_wchar;
225 typedef struct {
226 basic_istream_char base;
227 basic_stringbuf_char strbuf;
228 /* virtual inheritance
229 * basic_ios_char basic_ios;
231 } basic_istringstream_char;
233 typedef struct {
234 basic_istream_wchar base;
235 basic_stringbuf_wchar strbuf;
236 /* virtual inheritance
237 * basic_ios_wchar basic_ios;
239 } basic_istringstream_wchar;
241 typedef struct {
242 basic_iostream_char base;
243 basic_stringbuf_char strbuf;
244 /* virtual inheritance
245 * basic_ios_char basic_ios;
247 } basic_stringstream_char;
249 typedef struct {
250 basic_iostream_wchar base;
251 basic_stringbuf_wchar strbuf;
252 /* virtual inheritance
253 * basic_ios_wchar basic_ios;
255 } basic_stringstream_wchar;
257 typedef enum {
258 STRSTATE_Allocated = 1,
259 STRSTATE_Constant = 2,
260 STRSTATE_Dynamic = 4,
261 STRSTATE_Frozen = 8
262 } strstreambuf__Strstate;
264 typedef struct {
265 basic_streambuf_char base;
266 streamsize minsize;
267 char *endsave;
268 char *seekhigh;
269 int strmode;
270 void* (__cdecl *palloc)(MSVCP_size_t);
271 void (__cdecl *pfree)(void*);
272 } strstreambuf;
274 extern const vtable_ptr MSVCP_iosb_vtable;
276 /* ??_7ios_base@std@@6B@ */
277 extern const vtable_ptr MSVCP_ios_base_vtable;
279 /* ??_7?$basic_ios@DU?$char_traits@D@std@@@std@@6B@ */
280 extern const vtable_ptr MSVCP_basic_ios_char_vtable;
282 /* ??_7?$basic_ios@_WU?$char_traits@_W@std@@@std@@6B@ */
283 extern const vtable_ptr MSVCP_basic_ios_wchar_vtable;
285 /* ??_7?$basic_ios@GU?$char_traits@G@std@@@std@@6B@ */
286 extern const vtable_ptr MSVCP_basic_ios_short_vtable;
288 /* ??_7?$basic_streambuf@DU?$char_traits@D@std@@@std@@6B@ */
289 extern const vtable_ptr MSVCP_basic_streambuf_char_vtable;
291 /* ??_7?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@6B@ */
292 extern const vtable_ptr MSVCP_basic_streambuf_wchar_vtable;
294 /* ??_7?$basic_streambuf@GU?$char_traits@G@std@@@std@@6B@ */
295 extern const vtable_ptr MSVCP_basic_streambuf_short_vtable;
297 /* ??_7?$basic_filebuf@DU?$char_traits@D@std@@@std@@6B@ */
298 extern const vtable_ptr MSVCP_basic_filebuf_char_vtable;
300 /* ??_7?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@6B@ */
301 extern const vtable_ptr MSVCP_basic_filebuf_wchar_vtable;
303 /* ??_7?$basic_filebuf@GU?$char_traits@G@std@@@std@@6B@ */
304 extern const vtable_ptr MSVCP_basic_filebuf_short_vtable;
306 /* ??_7?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
307 extern const vtable_ptr MSVCP_basic_stringbuf_char_vtable;
309 /* ??_7?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
310 extern const vtable_ptr MSVCP_basic_stringbuf_wchar_vtable;
312 /* ??_7?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
313 extern const vtable_ptr MSVCP_basic_stringbuf_short_vtable;
315 /* ??_8?$basic_ostream@DU?$char_traits@D@std@@@std@@7B@ */
316 const int basic_ostream_char_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ostream_char), 8)};
317 /* ??_7?$basic_ostream@DU?$char_traits@D@std@@@std@@6B@ */
318 extern const vtable_ptr MSVCP_basic_ostream_char_vtable;
320 /* ??_8?$basic_ostream@_WU?$char_traits@_W@std@@@std@@7B@ */
321 const int basic_ostream_wchar_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ostream_wchar), 8)};
322 /* ??_7?$basic_ostream@_WU?$char_traits@_W@std@@@std@@6B@ */
323 extern const vtable_ptr MSVCP_basic_ostream_wchar_vtable;
325 /* ??_8?$basic_ostream@GU?$char_traits@G@std@@@std@@7B@ */
326 const int basic_ostream_short_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ostream_wchar), 8)};
327 /* ??_7?$basic_ostream@GU?$char_traits@G@std@@@std@@6B@ */
328 extern const vtable_ptr MSVCP_basic_ostream_short_vtable;
330 /* ??_8?$basic_istream@DU?$char_traits@D@std@@@std@@7B@ */
331 const int basic_istream_char_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_istream_char), 8)};
332 /* ??_7?$basic_istream@DU?$char_traits@D@std@@@std@@6B@ */
333 extern const vtable_ptr MSVCP_basic_istream_char_vtable;
335 /* ??_8?$basic_istream@_WU?$char_traits@_W@std@@@std@@7B@ */
336 const int basic_istream_wchar_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_istream_wchar), 8)};
337 /* ??_7?$basic_istream@_WU?$char_traits@_W@std@@@std@@6B@ */
338 extern const vtable_ptr MSVCP_basic_istream_wchar_vtable;
340 /* ??_8?$basic_istream@GU?$char_traits@G@std@@@std@@7B@ */
341 const int basic_istream_short_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_istream_wchar), 8)};
342 /* ??_7?$basic_istream@GU?$char_traits@G@std@@@std@@6B@ */
343 extern const vtable_ptr MSVCP_basic_istream_short_vtable;
345 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
346 const int basic_iostream_char_vbtable1[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_char), 8)};
347 /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
348 const int basic_iostream_char_vbtable2[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_char), 8)-FIELD_OFFSET(basic_iostream_char, base2)};
349 /* ??_7?$basic_iostream@DU?$char_traits@D@std@@@std@@6B@ */
350 extern const vtable_ptr MSVCP_basic_iostream_char_vtable;
352 /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
353 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
354 const int basic_iostream_wchar_vbtable1[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_wchar), 8)};
355 /* ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
356 /* ??_8?$basic_iostream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
357 const int basic_iostream_wchar_vbtable2[] = {0, ALIGNED_SIZE(sizeof(basic_iostream_wchar), 8)-FIELD_OFFSET(basic_iostream_wchar, base2)};
358 /* ??_7?$basic_iostream@_WU?$char_traits@_W@std@@@std@@6B@ */
359 extern const vtable_ptr MSVCP_basic_iostream_wchar_vtable;
360 /* ??_7?$basic_iostream@GU?$char_traits@G@std@@@std@@6B@ */
361 extern const vtable_ptr MSVCP_basic_iostream_short_vtable;
363 /* ??_8?$basic_ofstream@DU?$char_traits@D@std@@@std@@7B@ */
364 const int basic_ofstream_char_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ofstream_char), 8)};
365 /* ??_7?$basic_ofstream@DU?$char_traits@D@std@@@std@@6B@ */
366 extern const vtable_ptr MSVCP_basic_ofstream_char_vtable;
368 /* ??_8?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@7B@ */
369 const int basic_ofstream_wchar_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ofstream_wchar), 8)};
370 /* ??_7?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@6B@ */
371 extern const vtable_ptr MSVCP_basic_ofstream_wchar_vtable;
373 /* ??_8?$basic_ofstream@GU?$char_traits@G@std@@@std@@7B@ */
374 const int basic_ofstream_short_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ofstream_wchar), 8)};
375 /* ??_7?$basic_ofstream@GU?$char_traits@G@std@@@std@@6B@ */
376 extern const vtable_ptr MSVCP_basic_ofstream_short_vtable;
378 /* ??_8?$basic_ifstream@DU?$char_traits@D@std@@@std@@7B@ */
379 const int basic_ifstream_char_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ifstream_char), 8)};
380 /* ??_7?$basic_ifstream@DU?$char_traits@D@std@@@std@@6B@ */
381 extern const vtable_ptr MSVCP_basic_ifstream_char_vtable;
383 /* ??_8?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@7B@ */
384 const int basic_ifstream_wchar_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ifstream_wchar), 8)};
385 /* ??_7?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@6B@ */
386 extern const vtable_ptr MSVCP_basic_ifstream_wchar_vtable;
388 /* ??_8?$basic_ifstream@GU?$char_traits@G@std@@@std@@7B@ */
389 const int basic_ifstream_short_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ifstream_wchar), 8)};
390 /* ??_7?$basic_ifstream@GU?$char_traits@G@std@@@std@@6B@ */
391 extern const vtable_ptr MSVCP_basic_ifstream_short_vtable;
393 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
394 const int basic_fstream_char_vbtable1[] = {0, ALIGNED_SIZE(sizeof(basic_fstream_char), 8)};
395 /* ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
396 const int basic_fstream_char_vbtable2[] = {0, ALIGNED_SIZE(sizeof(basic_fstream_char), 8)-FIELD_OFFSET(basic_fstream_char, base.base2)};
397 /* ??_7?$basic_fstream@DU?$char_traits@D@std@@@std@@6B@ */
398 extern const vtable_ptr MSVCP_basic_fstream_char_vtable;
400 /* ??_8?$basic_fstream@_WU?$char_traits@_W@std@@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
401 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
402 const int basic_fstream_wchar_vbtable1[] = {0, ALIGNED_SIZE(sizeof(basic_fstream_wchar), 8)};
403 /* ??_8?$basic_fstream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
404 /* ??_8?$basic_fstream@GU?$char_traits@G@std@@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
405 const int basic_fstream_wchar_vbtable2[] = {0, ALIGNED_SIZE(sizeof(basic_fstream_wchar), 8)-FIELD_OFFSET(basic_fstream_wchar, base.base2)};
406 /* ??_7?$basic_fstream@_WU?$char_traits@_W@std@@@std@@6B@ */
407 extern const vtable_ptr MSVCP_basic_fstream_wchar_vtable;
408 /* ??_7?$basic_fstream@GU?$char_traits@G@std@@@std@@6B@ */
409 extern const vtable_ptr MSVCP_basic_fstream_short_vtable;
411 /* ??_8?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
412 const int basic_ostringstream_char_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ostringstream_char), 8)};
413 /* ??_7?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
414 extern const vtable_ptr MSVCP_basic_ostringstream_char_vtable;
416 /* ??_8?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */
417 const int basic_ostringstream_wchar_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ostringstream_wchar), 8)};
418 /* ??_7?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
419 extern const vtable_ptr MSVCP_basic_ostringstream_wchar_vtable;
421 /* ??_8?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
422 const int basic_ostringstream_short_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_ostringstream_wchar), 8)};
423 /* ??_7?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
424 extern const vtable_ptr MSVCP_basic_ostringstream_short_vtable;
426 /* ??_8?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ */
427 const int basic_istringstream_char_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_istringstream_char), 8)};
428 /* ??_7?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
429 extern const vtable_ptr MSVCP_basic_istringstream_char_vtable;
431 /* ??_8?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ */
432 const int basic_istringstream_wchar_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_istringstream_wchar), 8)};
433 /* ??_7?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
434 extern const vtable_ptr MSVCP_basic_istringstream_wchar_vtable;
436 /* ??_8?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ */
437 const int basic_istringstream_short_vbtable[] = {0, ALIGNED_SIZE(sizeof(basic_istringstream_wchar), 8)};
438 /* ??_7?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
439 extern const vtable_ptr MSVCP_basic_istringstream_short_vtable;
441 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */
442 const int basic_stringstream_char_vbtable1[] = {0, ALIGNED_SIZE(sizeof(basic_stringstream_char), 8)};
443 /* ??_8?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */
444 const int basic_stringstream_char_vbtable2[] = {0, ALIGNED_SIZE(sizeof(basic_stringstream_char), 8)-FIELD_OFFSET(basic_stringstream_char, base.base2)};
445 /* ??_7?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ */
446 extern const vtable_ptr MSVCP_basic_stringstream_char_vtable;
448 /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_istream@_WU?$char_traits@_W@std@@@1@@ */
449 const int basic_stringstream_wchar_vbtable1[] = {0, ALIGNED_SIZE(sizeof(basic_stringstream_wchar), 8)};
450 /* ??_8?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ */
451 const int basic_stringstream_wchar_vbtable2[] = {0, ALIGNED_SIZE(sizeof(basic_stringstream_wchar), 8)-FIELD_OFFSET(basic_stringstream_wchar, base.base2)};
452 /* ??_7?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ */
453 extern const vtable_ptr MSVCP_basic_stringstream_wchar_vtable;
455 /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_istream@GU?$char_traits@G@std@@@1@@ */
456 const int basic_stringstream_short_vbtable1[] = {0, ALIGNED_SIZE(sizeof(basic_stringstream_wchar), 8)};
457 /* ??_8?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B?$basic_ostream@GU?$char_traits@G@std@@@1@@ */
458 const int basic_stringstream_short_vbtable2[] = {0, ALIGNED_SIZE(sizeof(basic_stringstream_wchar), 8)-FIELD_OFFSET(basic_stringstream_wchar, base.base2)};
459 /* ??_7?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
460 extern const vtable_ptr MSVCP_basic_stringstream_short_vtable;
462 /* ??_7strstreambuf@std@@6B */
463 extern const vtable_ptr MSVCP_strstreambuf_vtable;
465 DEFINE_RTTI_DATA0(iosb, 0, ".?AV?$_Iosb@H@std@@");
466 DEFINE_RTTI_DATA1(ios_base, 0, &iosb_rtti_base_descriptor, ".?AV?$_Iosb@H@std@@");
467 DEFINE_RTTI_DATA2(basic_ios_char, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
468 ".?AV?$basic_ios@DU?$char_traits@D@std@@@std@@");
469 DEFINE_RTTI_DATA2(basic_ios_wchar, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
470 ".?AV?$basic_ios@_WU?$char_traits@_W@std@@@std@@");
471 DEFINE_RTTI_DATA2(basic_ios_short, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
472 ".?AV?$basic_ios@GU?$char_traits@G@std@@@std@@");
473 DEFINE_RTTI_DATA0(basic_streambuf_char, 0,
474 ".?AV?$basic_streambuf@DU?$char_traits@D@std@@@std@@");
475 DEFINE_RTTI_DATA0(basic_streambuf_wchar, 0,
476 ".?AV?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@");
477 DEFINE_RTTI_DATA0(basic_streambuf_short, 0,
478 ".?AV?$basic_streambuf@GU?$char_traits@G@std@@@std@@");
479 DEFINE_RTTI_DATA1(basic_filebuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
480 ".?AV?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@");
481 DEFINE_RTTI_DATA1(basic_filebuf_wchar, 0, &basic_streambuf_wchar_rtti_base_descriptor,
482 ".?AV?$basic_filebuf@GU?$char_traits@G@std@@@std@@");
483 DEFINE_RTTI_DATA1(basic_filebuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
484 ".?AV?$basic_filebuf@DU?$char_traits@D@std@@@std@@");
485 DEFINE_RTTI_DATA1(basic_stringbuf_char, 0, &basic_streambuf_char_rtti_base_descriptor,
486 ".?AV?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@");
487 DEFINE_RTTI_DATA1(basic_stringbuf_wchar, 0, &basic_streambuf_wchar_rtti_base_descriptor,
488 ".?AV?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@");
489 DEFINE_RTTI_DATA1(basic_stringbuf_short, 0, &basic_streambuf_short_rtti_base_descriptor,
490 ".?AV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@");
491 DEFINE_RTTI_DATA3(basic_ostream_char, sizeof(basic_ostream_char), &basic_ios_char_rtti_base_descriptor,
492 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
493 ".?AV?$basic_ostream@DU?$char_traits@D@std@@@std@@");
494 DEFINE_RTTI_DATA3(basic_ostream_wchar, sizeof(basic_ostream_wchar), &basic_ios_wchar_rtti_base_descriptor,
495 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
496 ".?AV?$basic_ostream@_WU?$char_traits@_W@std@@@std@@");
497 DEFINE_RTTI_DATA3(basic_ostream_short, sizeof(basic_ostream_wchar), &basic_ios_short_rtti_base_descriptor,
498 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
499 ".?AV?$basic_ostream@GU?$char_traits@G@std@@@std@@");
500 DEFINE_RTTI_DATA3(basic_istream_char, sizeof(basic_istream_char), &basic_ios_char_rtti_base_descriptor,
501 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
502 ".?AV?$basic_istream@DU?$char_traits@D@std@@@std@@");
503 DEFINE_RTTI_DATA3(basic_istream_wchar, sizeof(basic_istream_wchar), &basic_ios_wchar_rtti_base_descriptor,
504 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
505 ".?AV?$basic_istream@_WU?$char_traits@_W@std@@@std@@");
506 DEFINE_RTTI_DATA3(basic_istream_short, sizeof(basic_istream_wchar), &basic_ios_short_rtti_base_descriptor,
507 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
508 ".?AV?$basic_istream@GU?$char_traits@G@std@@@std@@");
509 DEFINE_RTTI_DATA8(basic_iostream_char, sizeof(basic_iostream_char),
510 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
511 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
512 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
513 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
514 ".?AV?$basic_iostream@DU?$char_traits@D@std@@@std@@");
515 DEFINE_RTTI_DATA8(basic_iostream_wchar, sizeof(basic_iostream_wchar),
516 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
517 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
518 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
519 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
520 ".?AV?$basic_iostream@_WU?$char_traits@_W@std@@@std@@");
521 DEFINE_RTTI_DATA8(basic_iostream_short, sizeof(basic_iostream_wchar),
522 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
523 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
524 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
525 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
526 ".?AV?$basic_iostream@GU?$char_traits@G@std@@@std@@");
527 DEFINE_RTTI_DATA4(basic_ofstream_char, sizeof(basic_ofstream_char),
528 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
529 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
530 ".?AV?$basic_ofstream@DU?$char_traits@D@std@@@std@@");
531 DEFINE_RTTI_DATA4(basic_ofstream_wchar, sizeof(basic_ofstream_wchar),
532 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
533 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
534 ".?AV?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@");
535 DEFINE_RTTI_DATA4(basic_ofstream_short, sizeof(basic_ofstream_wchar),
536 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
537 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
538 ".?AV?$basic_ofstream@GU?$char_traits@G@std@@@std@@");
539 DEFINE_RTTI_DATA4(basic_ifstream_char, sizeof(basic_ifstream_char),
540 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
541 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
542 ".?AV?$basic_ifstream@DU?$char_traits@D@std@@@std@@");
543 DEFINE_RTTI_DATA4(basic_ifstream_wchar, sizeof(basic_ifstream_wchar),
544 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
545 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
546 ".?AV?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@");
547 DEFINE_RTTI_DATA4(basic_ifstream_short, sizeof(basic_ifstream_wchar),
548 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
549 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
550 ".?AV?$basic_ifstream@GU?$char_traits@G@std@@@std@@");
551 DEFINE_RTTI_DATA8(basic_fstream_char, sizeof(basic_fstream_char),
552 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
553 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
554 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
555 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
556 ".?AV?$basic_fstream@DU?$char_traits@D@std@@@std@@");
557 DEFINE_RTTI_DATA8(basic_fstream_wchar, sizeof(basic_fstream_wchar),
558 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
559 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
560 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
561 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
562 ".?AV?$basic_fstream@_WU?$char_traits@_W@std@@@std@@");
563 DEFINE_RTTI_DATA8(basic_fstream_short, sizeof(basic_fstream_wchar),
564 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
565 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
566 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
567 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
568 ".?AV?$basic_fstream@GU?$char_traits@G@std@@@std@@");
569 DEFINE_RTTI_DATA4(basic_ostringstream_char, sizeof(basic_ostringstream_char),
570 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
571 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
572 ".?AV?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@");
573 DEFINE_RTTI_DATA4(basic_ostringstream_wchar, sizeof(basic_ostringstream_wchar),
574 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
575 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
576 ".?AV?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@");
577 DEFINE_RTTI_DATA4(basic_ostringstream_short, sizeof(basic_ostringstream_wchar),
578 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
579 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
580 ".?AV?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@");
581 DEFINE_RTTI_DATA4(basic_istringstream_char, sizeof(basic_istringstream_char),
582 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
583 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
584 ".?AV?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@");
585 DEFINE_RTTI_DATA4(basic_istringstream_wchar, sizeof(basic_istringstream_wchar),
586 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
587 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
588 ".?AV?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@");
589 DEFINE_RTTI_DATA4(basic_istringstream_short, sizeof(basic_istringstream_wchar),
590 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
591 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
592 ".?AV?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@");
593 DEFINE_RTTI_DATA8(basic_stringstream_char, sizeof(basic_stringstream_char),
594 &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
595 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
596 &basic_ostream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor,
597 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
598 ".?AV?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@");
599 DEFINE_RTTI_DATA8(basic_stringstream_wchar, sizeof(basic_stringstream_wchar),
600 &basic_istream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
601 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
602 &basic_ostream_wchar_rtti_base_descriptor, &basic_ios_wchar_rtti_base_descriptor,
603 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
604 ".?AV?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@");
605 DEFINE_RTTI_DATA8(basic_stringstream_short, sizeof(basic_stringstream_wchar),
606 &basic_istream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
607 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
608 &basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
609 &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
610 ".?AV?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@");
611 DEFINE_RTTI_DATA1(strstreambuf, sizeof(strstreambuf),
612 &basic_streambuf_char_rtti_base_descriptor, ".?AVstrstreambuf@std@@");
614 #ifndef __GNUC__
615 void __asm_dummy_vtables(void) {
616 #endif
617 __ASM_VTABLE(iosb, "");
618 __ASM_VTABLE(ios_base, "");
619 __ASM_VTABLE(basic_ios_char, "");
620 __ASM_VTABLE(basic_ios_wchar, "");
621 __ASM_VTABLE(basic_ios_short, "");
622 __ASM_VTABLE(basic_streambuf_char,
623 VTABLE_ADD_FUNC(basic_streambuf_char__Lock)
624 VTABLE_ADD_FUNC(basic_streambuf_char__Unlock)
625 VTABLE_ADD_FUNC(basic_streambuf_char_overflow)
626 VTABLE_ADD_FUNC(basic_streambuf_char_pbackfail)
627 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
628 VTABLE_ADD_FUNC(basic_streambuf_char_underflow)
629 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
630 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
631 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
632 VTABLE_ADD_FUNC(basic_streambuf_char_seekoff)
633 VTABLE_ADD_FUNC(basic_streambuf_char_seekpos)
634 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
635 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
636 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
637 __ASM_VTABLE(basic_streambuf_wchar,
638 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
639 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
640 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
641 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
642 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
643 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
644 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
645 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
646 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
647 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
648 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
649 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
650 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
651 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
652 __ASM_VTABLE(basic_streambuf_short,
653 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
654 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
655 VTABLE_ADD_FUNC(basic_streambuf_wchar_overflow)
656 VTABLE_ADD_FUNC(basic_streambuf_wchar_pbackfail)
657 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
658 VTABLE_ADD_FUNC(basic_streambuf_wchar_underflow)
659 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
660 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
661 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
662 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekoff)
663 VTABLE_ADD_FUNC(basic_streambuf_wchar_seekpos)
664 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
665 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
666 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
667 __ASM_VTABLE(basic_filebuf_char,
668 VTABLE_ADD_FUNC(basic_streambuf_char__Lock)
669 VTABLE_ADD_FUNC(basic_streambuf_char__Unlock)
670 VTABLE_ADD_FUNC(basic_filebuf_char_overflow)
671 VTABLE_ADD_FUNC(basic_filebuf_char_pbackfail)
672 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
673 VTABLE_ADD_FUNC(basic_filebuf_char_underflow)
674 VTABLE_ADD_FUNC(basic_filebuf_char_uflow)
675 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
676 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
677 VTABLE_ADD_FUNC(basic_filebuf_char_seekoff)
678 VTABLE_ADD_FUNC(basic_filebuf_char_seekpos)
679 VTABLE_ADD_FUNC(basic_filebuf_char_setbuf)
680 VTABLE_ADD_FUNC(basic_filebuf_char_sync)
681 VTABLE_ADD_FUNC(basic_filebuf_char_imbue));
682 __ASM_VTABLE(basic_filebuf_wchar,
683 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
684 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
685 VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow)
686 VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail)
687 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
688 VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow)
689 VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow)
690 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
691 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
692 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff)
693 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos)
694 VTABLE_ADD_FUNC(basic_filebuf_wchar_setbuf)
695 VTABLE_ADD_FUNC(basic_filebuf_wchar_sync)
696 VTABLE_ADD_FUNC(basic_filebuf_wchar_imbue));
697 __ASM_VTABLE(basic_filebuf_short,
698 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
699 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
700 VTABLE_ADD_FUNC(basic_filebuf_wchar_overflow)
701 VTABLE_ADD_FUNC(basic_filebuf_wchar_pbackfail)
702 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
703 VTABLE_ADD_FUNC(basic_filebuf_wchar_underflow)
704 VTABLE_ADD_FUNC(basic_filebuf_wchar_uflow)
705 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
706 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
707 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekoff)
708 VTABLE_ADD_FUNC(basic_filebuf_wchar_seekpos)
709 VTABLE_ADD_FUNC(basic_filebuf_short_setbuf)
710 VTABLE_ADD_FUNC(basic_filebuf_wchar_sync)
711 VTABLE_ADD_FUNC(basic_filebuf_short_imbue));
712 __ASM_VTABLE(basic_stringbuf_char,
713 VTABLE_ADD_FUNC(basic_streambuf_char__Lock)
714 VTABLE_ADD_FUNC(basic_streambuf_char__Unlock)
715 VTABLE_ADD_FUNC(basic_stringbuf_char_overflow)
716 VTABLE_ADD_FUNC(basic_stringbuf_char_pbackfail)
717 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
718 VTABLE_ADD_FUNC(basic_stringbuf_char_underflow)
719 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
720 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
721 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
722 VTABLE_ADD_FUNC(basic_stringbuf_char_seekoff)
723 VTABLE_ADD_FUNC(basic_stringbuf_char_seekpos)
724 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
725 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
726 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
727 __ASM_VTABLE(basic_stringbuf_wchar,
728 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
729 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
730 VTABLE_ADD_FUNC(basic_stringbuf_wchar_overflow)
731 VTABLE_ADD_FUNC(basic_stringbuf_wchar_pbackfail)
732 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
733 VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow)
734 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
735 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
736 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
737 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff)
738 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos)
739 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
740 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
741 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
742 __ASM_VTABLE(basic_stringbuf_short,
743 VTABLE_ADD_FUNC(basic_streambuf_wchar__Lock)
744 VTABLE_ADD_FUNC(basic_streambuf_wchar__Unlock)
745 VTABLE_ADD_FUNC(basic_stringbuf_wchar_overflow)
746 VTABLE_ADD_FUNC(basic_stringbuf_wchar_pbackfail)
747 VTABLE_ADD_FUNC(basic_streambuf_wchar_showmanyc)
748 VTABLE_ADD_FUNC(basic_stringbuf_wchar_underflow)
749 VTABLE_ADD_FUNC(basic_streambuf_wchar_uflow)
750 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsgetn)
751 VTABLE_ADD_FUNC(basic_streambuf_wchar_xsputn)
752 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekoff)
753 VTABLE_ADD_FUNC(basic_stringbuf_wchar_seekpos)
754 VTABLE_ADD_FUNC(basic_streambuf_wchar_setbuf)
755 VTABLE_ADD_FUNC(basic_streambuf_wchar_sync)
756 VTABLE_ADD_FUNC(basic_streambuf_wchar_imbue));
757 __ASM_VTABLE(basic_ostream_char, "");
758 __ASM_VTABLE(basic_ostream_wchar, "");
759 __ASM_VTABLE(basic_ostream_short, "");
760 __ASM_VTABLE(basic_istream_char, "");
761 __ASM_VTABLE(basic_istream_wchar, "");
762 __ASM_VTABLE(basic_istream_short, "");
763 __ASM_VTABLE(basic_iostream_char, "");
764 __ASM_VTABLE(basic_iostream_wchar, "");
765 __ASM_VTABLE(basic_iostream_short, "");
766 __ASM_VTABLE(basic_ofstream_char, "");
767 __ASM_VTABLE(basic_ofstream_wchar, "");
768 __ASM_VTABLE(basic_ofstream_short, "");
769 __ASM_VTABLE(basic_ifstream_char, "");
770 __ASM_VTABLE(basic_ifstream_wchar, "");
771 __ASM_VTABLE(basic_ifstream_short, "");
772 __ASM_VTABLE(basic_fstream_char, "");
773 __ASM_VTABLE(basic_fstream_wchar, "");
774 __ASM_VTABLE(basic_fstream_short, "");
775 __ASM_VTABLE(basic_ostringstream_char, "");
776 __ASM_VTABLE(basic_ostringstream_wchar, "");
777 __ASM_VTABLE(basic_ostringstream_short, "");
778 __ASM_VTABLE(basic_istringstream_char, "");
779 __ASM_VTABLE(basic_istringstream_wchar, "");
780 __ASM_VTABLE(basic_istringstream_short, "");
781 __ASM_VTABLE(basic_stringstream_char, "");
782 __ASM_VTABLE(basic_stringstream_wchar, "");
783 __ASM_VTABLE(basic_stringstream_short, "");
784 __ASM_VTABLE(strstreambuf,
785 VTABLE_ADD_FUNC(basic_streambuf_char__Lock)
786 VTABLE_ADD_FUNC(basic_streambuf_char__Unlock)
787 VTABLE_ADD_FUNC(strstreambuf_overflow)
788 VTABLE_ADD_FUNC(strstreambuf_pbackfail)
789 VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
790 VTABLE_ADD_FUNC(strstreambuf_underflow)
791 VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
792 VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
793 VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
794 VTABLE_ADD_FUNC(strstreambuf_seekoff)
795 VTABLE_ADD_FUNC(strstreambuf_seekpos)
796 VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
797 VTABLE_ADD_FUNC(basic_streambuf_char_sync)
798 VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
799 #ifndef __GNUC__
801 #endif
803 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
804 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
805 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp_next, 16)
806 void __thiscall basic_streambuf_char_setp_next(basic_streambuf_char *this, char *first, char *next, char *last)
808 TRACE("(%p %p %p %p)\n", this, first, next, last);
810 this->wbuf = first;
811 this->wpos = next;
812 this->wsize = last-next;
815 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD0@Z */
816 /* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD0@Z */
817 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp, 12)
818 void __thiscall basic_streambuf_char_setp(basic_streambuf_char *this, char *first, char *last)
820 basic_streambuf_char_setp_next(this, first, first, last);
823 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */
824 /* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */
825 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setg, 16)
826 void __thiscall basic_streambuf_char_setg(basic_streambuf_char *this, char *first, char *next, char *last)
828 TRACE("(%p %p %p %p)\n", this, first, next, last);
830 this->rbuf = first;
831 this->rpos = next;
832 this->rsize = last-next;
835 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXXZ */
836 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXXZ */
837 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init_empty, 4)
838 void __thiscall basic_streambuf_char__Init_empty(basic_streambuf_char *this)
840 TRACE("(%p)\n", this);
842 this->prbuf = &this->rbuf;
843 this->pwbuf = &this->wbuf;
844 this->prpos = &this->rpos;
845 this->pwpos = &this->wpos;
846 this->prsize = &this->rsize;
847 this->pwsize = &this->wsize;
849 basic_streambuf_char_setp(this, NULL, NULL);
850 basic_streambuf_char_setg(this, NULL, NULL, NULL);
853 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@W4_Uninitialized@1@@Z */
854 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
855 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor_uninitialized, 8)
856 basic_streambuf_char* __thiscall basic_streambuf_char_ctor_uninitialized(basic_streambuf_char *this, int uninitialized)
858 TRACE("(%p %d)\n", this, uninitialized);
859 this->vtable = &MSVCP_basic_streambuf_char_vtable;
860 mutex_ctor(&this->lock);
861 return this;
864 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ */
865 /* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ */
866 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor, 4)
867 basic_streambuf_char* __thiscall basic_streambuf_char_ctor(basic_streambuf_char *this)
869 TRACE("(%p)\n", this);
871 this->vtable = &MSVCP_basic_streambuf_char_vtable;
872 mutex_ctor(&this->lock);
873 this->loc = MSVCRT_operator_new(sizeof(locale));
874 locale_ctor(this->loc);
875 basic_streambuf_char__Init_empty(this);
877 return this;
880 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
881 /* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
882 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_dtor, 4)
883 void __thiscall basic_streambuf_char_dtor(basic_streambuf_char *this)
885 TRACE("(%p)\n", this);
887 mutex_dtor(&this->lock);
888 locale_dtor(this->loc);
889 MSVCRT_operator_delete(this->loc);
892 DEFINE_THISCALL_WRAPPER(MSVCP_basic_streambuf_char_vector_dtor, 8)
893 basic_streambuf_char* __thiscall MSVCP_basic_streambuf_char_vector_dtor(basic_streambuf_char *this, unsigned int flags)
895 TRACE("(%p %x)\n", this, flags);
896 if(flags & 2) {
897 /* we have an array, with the number of elements stored before the first object */
898 int i, *ptr = (int *)this-1;
900 for(i=*ptr-1; i>=0; i--)
901 basic_streambuf_char_dtor(this+i);
902 MSVCRT_operator_delete(ptr);
903 } else {
904 basic_streambuf_char_dtor(this);
905 if(flags & 1)
906 MSVCRT_operator_delete(this);
909 return this;
912 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
913 /* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
914 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnavail, 4)
915 streamsize __thiscall basic_streambuf_char__Gnavail(const basic_streambuf_char *this)
917 TRACE("(%p)\n", this);
918 return *this->prpos ? *this->prsize : 0;
921 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
922 /* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
923 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gndec, 4)
924 char* __thiscall basic_streambuf_char__Gndec(basic_streambuf_char *this)
926 TRACE("(%p)\n", this);
927 (*this->prsize)++;
928 (*this->prpos)--;
929 return *this->prpos;
932 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
933 /* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
934 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gninc, 4)
935 char* __thiscall basic_streambuf_char__Gninc(basic_streambuf_char *this)
937 TRACE("(%p)\n", this);
938 (*this->prsize)--;
939 return (*this->prpos)++;
942 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
943 /* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
944 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnpreinc, 4)
945 char* __thiscall basic_streambuf_char__Gnpreinc(basic_streambuf_char *this)
947 TRACE("(%p)\n", this);
948 (*this->prsize)--;
949 (*this->prpos)++;
950 return *this->prpos;
953 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAPAD0PAH001@Z */
954 /* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAPEAD0PEAH001@Z */
955 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init, 28)
956 void __thiscall basic_streambuf_char__Init(basic_streambuf_char *this, char **gf, char **gn, int *gc, char **pf, char **pn, int *pc)
958 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
960 this->prbuf = gf;
961 this->pwbuf = pf;
962 this->prpos = gn;
963 this->pwpos = pn;
964 this->prsize = gc;
965 this->pwsize = pc;
968 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
969 /* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
970 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Lock, 4)
971 #define call_basic_streambuf_char__Lock(this) CALL_VTBL_FUNC(this, 4, \
972 void, (basic_streambuf_char*), (this))
973 void __thiscall basic_streambuf_char__Lock(basic_streambuf_char *this)
975 TRACE("(%p)\n", this);
976 mutex_lock(&this->lock);
979 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */
980 /* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */
981 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pnavail, 4)
982 streamsize __thiscall basic_streambuf_char__Pnavail(const basic_streambuf_char *this)
984 TRACE("(%p)\n", this);
985 return *this->pwpos ? *this->pwsize : 0;
988 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */
989 /* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */
990 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pninc, 4)
991 char* __thiscall basic_streambuf_char__Pninc(basic_streambuf_char *this)
993 TRACE("(%p)\n", this);
994 (*this->pwsize)--;
995 return (*this->pwpos)++;
998 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
999 /* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1000 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_underflow, 4)
1001 #define call_basic_streambuf_char_underflow(this) CALL_VTBL_FUNC(this, 24, \
1002 int, (basic_streambuf_char*), (this))
1003 int __thiscall basic_streambuf_char_underflow(basic_streambuf_char *this)
1005 TRACE("(%p)\n", this);
1006 return EOF;
1009 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1010 /* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1011 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_uflow, 4)
1012 #define call_basic_streambuf_char_uflow(this) CALL_VTBL_FUNC(this, 28, \
1013 int, (basic_streambuf_char*), (this))
1014 int __thiscall basic_streambuf_char_uflow(basic_streambuf_char *this)
1016 int ret;
1018 TRACE("(%p)\n", this);
1020 if(call_basic_streambuf_char_underflow(this)==EOF)
1021 return EOF;
1023 ret = **this->prpos;
1024 (*this->prsize)--;
1025 (*this->prpos)++;
1026 return ret;
1029 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADIH@Z */
1030 /* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_K_J@Z */
1031 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Xsgetn_s, 20)
1032 #define call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count) CALL_VTBL_FUNC(this, 28, \
1033 streamsize, (basic_streambuf_char*, char*, MSVCP_size_t, streamsize), (this, ptr, size, count))
1034 streamsize __thiscall basic_streambuf_char__Xsgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count)
1036 streamsize copied, chunk;
1037 int c;
1039 TRACE("(%p %p %lu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
1041 for(copied=0; copied<count && size;) {
1042 chunk = basic_streambuf_char__Gnavail(this);
1043 if(chunk > count-copied)
1044 chunk = count-copied;
1046 if(chunk > 0) {
1047 memcpy_s(ptr+copied, size, *this->prpos, chunk);
1048 *this->prpos += chunk;
1049 *this->prsize -= chunk;
1050 copied += chunk;
1051 size -= chunk;
1052 }else if((c = call_basic_streambuf_char_uflow(this)) != EOF) {
1053 ptr[copied] = c;
1054 copied++;
1055 size--;
1056 }else {
1057 break;
1061 return copied;
1064 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
1065 /* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
1066 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Sgetn_s, 20)
1067 streamsize __thiscall basic_streambuf_char__Sgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count)
1069 TRACE("(%p %p %lu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
1070 return call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count);
1073 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1074 /* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1075 DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Unlock, 4)
1076 #define call_basic_streambuf_char__Unlock(this) CALL_VTBL_FUNC(this, 8, \
1077 void, (basic_streambuf_char*), (this))
1078 void __thiscall basic_streambuf_char__Unlock(basic_streambuf_char *this)
1080 TRACE("(%p)\n", this);
1081 mutex_unlock(&this->lock);
1084 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1085 /* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1086 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_eback, 4)
1087 char* __thiscall basic_streambuf_char_eback(const basic_streambuf_char *this)
1089 TRACE("(%p)\n", this);
1090 return *this->prbuf;
1093 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1094 /* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1095 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gptr, 4)
1096 char* __thiscall basic_streambuf_char_gptr(const basic_streambuf_char *this)
1098 TRACE("(%p)\n", this);
1099 return *this->prpos;
1102 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1103 /* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1104 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_egptr, 4)
1105 char* __thiscall basic_streambuf_char_egptr(const basic_streambuf_char *this)
1107 TRACE("(%p)\n", this);
1108 return *this->prpos+*this->prsize;
1111 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1112 /* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1113 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_epptr, 4)
1114 char* __thiscall basic_streambuf_char_epptr(const basic_streambuf_char *this)
1116 TRACE("(%p)\n", this);
1117 return *this->pwpos+*this->pwsize;
1120 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1121 /* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1122 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gbump, 8)
1123 void __thiscall basic_streambuf_char_gbump(basic_streambuf_char *this, int off)
1125 TRACE("(%p %d)\n", this, off);
1126 *this->prpos += off;
1127 *this->prsize -= off;
1130 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ */
1131 /* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ */
1132 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_getloc, 8)
1133 locale* __thiscall basic_streambuf_char_getloc(const basic_streambuf_char *this, locale *ret)
1135 TRACE("(%p)\n", this);
1136 return locale_copy_ctor(ret, this->loc);
1139 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
1140 /* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
1141 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_imbue, 8)
1142 #define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 56, \
1143 void, (basic_streambuf_char*, const locale*), (this, loc))
1144 void __thiscall basic_streambuf_char_imbue(basic_streambuf_char *this, const locale *loc)
1146 TRACE("(%p %p)\n", this, loc);
1149 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1150 /* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1151 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_overflow, 8)
1152 #define call_basic_streambuf_char_overflow(this, ch) CALL_VTBL_FUNC(this, 12, \
1153 int, (basic_streambuf_char*, int), (this, ch))
1154 int __thiscall basic_streambuf_char_overflow(basic_streambuf_char *this, int ch)
1156 TRACE("(%p %d)\n", this, ch);
1157 return EOF;
1160 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
1161 /* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
1162 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbackfail, 8)
1163 #define call_basic_streambuf_char_pbackfail(this, ch) CALL_VTBL_FUNC(this, 16, \
1164 int, (basic_streambuf_char*, int), (this, ch))
1165 int __thiscall basic_streambuf_char_pbackfail(basic_streambuf_char *this, int ch)
1167 TRACE("(%p %d)\n", this, ch);
1168 return EOF;
1171 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1172 /* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1173 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbase, 4)
1174 char* __thiscall basic_streambuf_char_pbase(const basic_streambuf_char *this)
1176 TRACE("(%p)\n", this);
1177 return *this->pwbuf;
1180 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */
1181 /* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */
1182 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbump, 8)
1183 void __thiscall basic_streambuf_char_pbump(basic_streambuf_char *this, int off)
1185 TRACE("(%p %d)\n", this, off);
1186 *this->pwpos += off;
1187 *this->pwsize -= off;
1190 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */
1191 /* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */
1192 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pptr, 4)
1193 char* __thiscall basic_streambuf_char_pptr(const basic_streambuf_char *this)
1195 TRACE("(%p)\n", this);
1196 return *this->pwpos;
1199 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1200 /* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1201 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubimbue, 12)
1202 locale* __thiscall basic_streambuf_char_pubimbue(basic_streambuf_char *this, locale *ret, const locale *loc)
1204 TRACE("(%p %p)\n", this, loc);
1205 memcpy(ret, this->loc, sizeof(locale));
1206 call_basic_streambuf_char_imbue(this, loc);
1207 locale_copy_ctor(this->loc, loc);
1208 return ret;
1211 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1212 /* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1213 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 24)
1214 #define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 40, \
1215 fpos_int*, (basic_streambuf_char*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
1216 fpos_int* __thiscall basic_streambuf_char_seekoff(basic_streambuf_char *this,
1217 fpos_int *ret, streamoff off, int way, int mode)
1219 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
1220 ret->off = 0;
1221 ret->pos = -1;
1222 ret->state = 0;
1223 return ret;
1226 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
1227 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
1228 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 24)
1229 fpos_int* __thiscall basic_streambuf_char_pubseekoff(basic_streambuf_char *this,
1230 fpos_int *ret, streamoff off, int way, int mode)
1232 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
1233 return call_basic_streambuf_char_seekoff(this, ret, off, way, mode);
1236 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
1237 /* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
1238 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 24)
1239 fpos_int* __thiscall basic_streambuf_char_pubseekoff_old(basic_streambuf_char *this,
1240 fpos_int *ret, streamoff off, unsigned int way, unsigned int mode)
1242 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
1243 return basic_streambuf_char_pubseekoff(this, ret, off, way, mode);
1246 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
1247 /* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
1248 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekpos, 36)
1249 #define call_basic_streambuf_char_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 44, \
1250 fpos_int*, (basic_streambuf_char*, fpos_int*, fpos_int, int), (this, ret, pos, mode))
1251 fpos_int* __thiscall basic_streambuf_char_seekpos(basic_streambuf_char *this,
1252 fpos_int *ret, fpos_int pos, int mode)
1254 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1255 ret->off = 0;
1256 ret->pos = -1;
1257 ret->state = 0;
1258 return ret;
1261 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
1262 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
1263 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos, 36)
1264 fpos_int* __thiscall basic_streambuf_char_pubseekpos(basic_streambuf_char *this,
1265 fpos_int *ret, fpos_int pos, int mode)
1267 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1268 return call_basic_streambuf_char_seekpos(this, ret, pos, mode);
1271 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
1272 /* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
1273 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos_old, 36)
1274 fpos_int* __thiscall basic_streambuf_char_pubseekpos_old(basic_streambuf_char *this,
1275 fpos_int *ret, fpos_int pos, unsigned int mode)
1277 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
1278 return basic_streambuf_char_pubseekpos(this, ret, pos, mode);
1281 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PADH@Z */
1282 /* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z */
1283 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 16)
1284 #define call_basic_streambuf_char_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 48, \
1285 basic_streambuf_char*, (basic_streambuf_char*, char*, streamsize), (this, buf, count))
1286 basic_streambuf_char* __thiscall basic_streambuf_char_setbuf(basic_streambuf_char *this, char *buf, streamsize count)
1288 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
1289 return this;
1292 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PADH@Z */
1293 /* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEAD_J@Z */
1294 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 16)
1295 basic_streambuf_char* __thiscall basic_streambuf_char_pubsetbuf(basic_streambuf_char *this, char *buf, streamsize count)
1297 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
1298 return call_basic_streambuf_char_setbuf(this, buf, count);
1301 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1302 /* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
1303 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sync, 4)
1304 #define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 52, \
1305 int, (basic_streambuf_char*), (this))
1306 int __thiscall basic_streambuf_char_sync(basic_streambuf_char *this)
1308 TRACE("(%p)\n", this);
1309 return 0;
1312 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1313 /* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1314 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsync, 4)
1315 int __thiscall basic_streambuf_char_pubsync(basic_streambuf_char *this)
1317 TRACE("(%p)\n", this);
1318 return call_basic_streambuf_char_sync(this);
1321 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
1322 /* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
1323 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 16)
1324 streamsize __thiscall basic_streambuf_char_sgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1326 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1327 return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1330 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
1331 /* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ */
1332 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_showmanyc, 4)
1333 #define call_basic_streambuf_char_showmanyc(this) CALL_VTBL_FUNC(this, 20, \
1334 streamsize, (basic_streambuf_char*), (this))
1335 streamsize __thiscall basic_streambuf_char_showmanyc(basic_streambuf_char *this)
1337 TRACE("(%p)\n", this);
1338 return 0;
1341 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1342 /* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JXZ */
1343 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_in_avail, 4)
1344 streamsize __thiscall basic_streambuf_char_in_avail(basic_streambuf_char *this)
1346 streamsize ret;
1348 TRACE("(%p)\n", this);
1350 ret = basic_streambuf_char__Gnavail(this);
1351 return ret ? ret : call_basic_streambuf_char_showmanyc(this);
1354 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1355 /* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1356 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputbackc, 8)
1357 int __thiscall basic_streambuf_char_sputbackc(basic_streambuf_char *this, char ch)
1359 TRACE("(%p %d)\n", this, ch);
1360 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
1361 (*this->prsize)++;
1362 (*this->prpos)--;
1363 return ch;
1366 return call_basic_streambuf_char_pbackfail(this, ch);
1369 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */
1370 /* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */
1371 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputc, 8)
1372 int __thiscall basic_streambuf_char_sputc(basic_streambuf_char *this, char ch)
1374 TRACE("(%p %d)\n", this, ch);
1375 return basic_streambuf_char__Pnavail(this) ?
1376 (*basic_streambuf_char__Pninc(this) = ch) :
1377 call_basic_streambuf_char_overflow(this, ch);
1380 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1381 /* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1382 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sungetc, 4)
1383 int __thiscall basic_streambuf_char_sungetc(basic_streambuf_char *this)
1385 TRACE("(%p)\n", this);
1386 if(*this->prpos && *this->prpos>*this->prbuf) {
1387 (*this->prsize)++;
1388 (*this->prpos)--;
1389 return **this->prpos;
1392 return call_basic_streambuf_char_pbackfail(this, EOF);
1395 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
1396 /* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
1397 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_stossc, 4)
1398 void __thiscall basic_streambuf_char_stossc(basic_streambuf_char *this)
1400 TRACE("(%p)\n", this);
1401 if(basic_streambuf_char__Gnavail(this))
1402 basic_streambuf_char__Gninc(this);
1403 else
1404 call_basic_streambuf_char_uflow(this);
1407 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1408 /* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1409 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sbumpc, 4)
1410 int __thiscall basic_streambuf_char_sbumpc(basic_streambuf_char *this)
1412 TRACE("(%p)\n", this);
1413 return basic_streambuf_char__Gnavail(this) ?
1414 *basic_streambuf_char__Gninc(this) : call_basic_streambuf_char_uflow(this);
1417 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1418 /* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1419 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetc, 4)
1420 int __thiscall basic_streambuf_char_sgetc(basic_streambuf_char *this)
1422 TRACE("(%p)\n", this);
1423 return basic_streambuf_char__Gnavail(this) ?
1424 *basic_streambuf_char_gptr(this) : call_basic_streambuf_char_underflow(this);
1427 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */
1428 /* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */
1429 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_snextc, 4)
1430 int __thiscall basic_streambuf_char_snextc(basic_streambuf_char *this)
1432 TRACE("(%p)\n", this);
1434 if(basic_streambuf_char__Gnavail(this) > 1)
1435 return *basic_streambuf_char__Gnpreinc(this);
1436 return basic_streambuf_char_sbumpc(this)==EOF ?
1437 EOF : basic_streambuf_char_sgetc(this);
1440 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADH@Z */
1441 /* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z */
1442 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 16)
1443 #define call_basic_streambuf_char_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 32, \
1444 streamsize, (basic_streambuf_char*, char*, streamsize), (this, ptr, count))
1445 streamsize __thiscall basic_streambuf_char_xsgetn(basic_streambuf_char *this, char *ptr, streamsize count)
1447 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1448 return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count);
1451 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPBDH@Z */
1452 /* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z */
1453 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 16)
1454 #define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 36, \
1455 streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count))
1456 streamsize __thiscall basic_streambuf_char_xsputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1458 streamsize copied, chunk;
1460 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1462 for(copied=0; copied<count;) {
1463 chunk = basic_streambuf_char__Pnavail(this);
1464 if(chunk > count-copied)
1465 chunk = count-copied;
1467 if(chunk > 0) {
1468 memcpy(*this->pwpos, ptr+copied, chunk);
1469 *this->pwpos += chunk;
1470 *this->pwsize -= chunk;
1471 copied += chunk;
1472 }else if(call_basic_streambuf_char_overflow(this, ptr[copied]) != EOF) {
1473 copied++;
1474 }else {
1475 break;
1479 return copied;
1482 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z */
1483 /* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z */
1484 DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 16)
1485 streamsize __thiscall basic_streambuf_char_sputn(basic_streambuf_char *this, const char *ptr, streamsize count)
1487 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
1488 return call_basic_streambuf_char_xsputn(this, ptr, count);
1491 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
1492 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
1493 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
1494 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
1495 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp_next, 16)
1496 void __thiscall basic_streambuf_wchar_setp_next(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
1498 TRACE("(%p %p %p %p)\n", this, first, next, last);
1500 this->wbuf = first;
1501 this->wpos = next;
1502 this->wsize = last-next;
1505 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W0@Z */
1506 /* ?setp@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W0@Z */
1507 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG0@Z */
1508 /* ?setp@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG0@Z */
1509 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setp, 12)
1510 void __thiscall basic_streambuf_wchar_setp(basic_streambuf_wchar *this, wchar_t *first, wchar_t *last)
1512 basic_streambuf_wchar_setp_next(this, first, first, last);
1515 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPA_W00@Z */
1516 /* ?setg@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEA_W00@Z */
1517 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAG00@Z */
1518 /* ?setg@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAG00@Z */
1519 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setg, 16)
1520 void __thiscall basic_streambuf_wchar_setg(basic_streambuf_wchar *this, wchar_t *first, wchar_t *next, wchar_t *last)
1522 TRACE("(%p %p %p %p)\n", this, first, next, last);
1524 this->rbuf = first;
1525 this->rpos = next;
1526 this->rsize = last-next;
1529 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXXZ */
1530 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXXZ */
1531 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXXZ */
1532 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */
1533 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init_empty, 4)
1534 void __thiscall basic_streambuf_wchar__Init_empty(basic_streambuf_wchar *this)
1536 TRACE("(%p)\n", this);
1538 this->prbuf = &this->rbuf;
1539 this->pwbuf = &this->wbuf;
1540 this->prpos = &this->rpos;
1541 this->pwpos = &this->wpos;
1542 this->prsize = &this->rsize;
1543 this->pwsize = &this->wsize;
1545 basic_streambuf_wchar_setp(this, NULL, NULL);
1546 basic_streambuf_wchar_setg(this, NULL, NULL, NULL);
1549 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1550 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1551 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor_uninitialized, 8)
1552 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
1554 TRACE("(%p %d)\n", this, uninitialized);
1555 this->vtable = &MSVCP_basic_streambuf_wchar_vtable;
1556 mutex_ctor(&this->lock);
1557 return this;
1560 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@W4_Uninitialized@1@@Z */
1561 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@W4_Uninitialized@1@@Z */
1562 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor_uninitialized, 8)
1563 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor_uninitialized(basic_streambuf_wchar *this, int uninitialized)
1565 TRACE("(%p %d)\n", this, uninitialized);
1566 basic_streambuf_wchar_ctor_uninitialized(this, uninitialized);
1567 this->vtable = &MSVCP_basic_streambuf_short_vtable;
1568 return this;
1571 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
1572 /* ??0?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
1573 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_ctor, 4)
1574 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_ctor(basic_streambuf_wchar *this)
1576 TRACE("(%p)\n", this);
1578 this->vtable = &MSVCP_basic_streambuf_wchar_vtable;
1579 mutex_ctor(&this->lock);
1580 this->loc = MSVCRT_operator_new(sizeof(locale));
1581 locale_ctor(this->loc);
1582 basic_streambuf_wchar__Init_empty(this);
1584 return this;
1587 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAE@XZ */
1588 /* ??0?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAA@XZ */
1589 DEFINE_THISCALL_WRAPPER(basic_streambuf_short_ctor, 4)
1590 basic_streambuf_wchar* __thiscall basic_streambuf_short_ctor(basic_streambuf_wchar *this)
1592 TRACE("(%p)\n", this);
1593 basic_streambuf_wchar_ctor(this);
1594 this->vtable = &MSVCP_basic_streambuf_short_vtable;
1595 return this;
1598 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
1599 /* ??1?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
1600 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
1601 /* ??1?$basic_streambuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
1602 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_dtor, 4)
1603 void __thiscall basic_streambuf_wchar_dtor(basic_streambuf_wchar *this)
1605 TRACE("(%p)\n", this);
1607 mutex_dtor(&this->lock);
1608 locale_dtor(this->loc);
1609 MSVCRT_operator_delete(this->loc);
1612 DEFINE_THISCALL_WRAPPER(MSVCP_basic_streambuf_wchar_vector_dtor, 8)
1613 basic_streambuf_wchar* __thiscall MSVCP_basic_streambuf_wchar_vector_dtor(basic_streambuf_wchar *this, unsigned int flags)
1615 TRACE("(%p %x)\n", this, flags);
1616 if(flags & 2) {
1617 /* we have an array, with the number of elements stored before the first object */
1618 int i, *ptr = (int *)this-1;
1620 for(i=*ptr-1; i>=0; i--)
1621 basic_streambuf_wchar_dtor(this+i);
1622 MSVCRT_operator_delete(ptr);
1623 } else {
1624 basic_streambuf_wchar_dtor(this);
1625 if(flags & 1)
1626 MSVCRT_operator_delete(this);
1629 return this;
1632 DEFINE_THISCALL_WRAPPER(MSVCP_basic_streambuf_short_vector_dtor, 8)
1633 basic_streambuf_wchar* __thiscall MSVCP_basic_streambuf_short_vector_dtor(basic_streambuf_wchar *this, unsigned int flags)
1635 TRACE("(%p %x)\n", this, flags);
1636 return MSVCP_basic_streambuf_wchar_vector_dtor(this, flags);
1639 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
1640 /* ?_Gnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
1641 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
1642 /* ?_Gnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
1643 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gnavail, 4)
1644 streamsize __thiscall basic_streambuf_wchar__Gnavail(const basic_streambuf_wchar *this)
1646 TRACE("(%p)\n", this);
1647 return *this->prpos ? *this->prsize : 0;
1650 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1651 /* ?_Gndec@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1652 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1653 /* ?_Gndec@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1654 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gndec, 4)
1655 wchar_t* __thiscall basic_streambuf_wchar__Gndec(basic_streambuf_wchar *this)
1657 TRACE("(%p)\n", this);
1658 (*this->prsize)++;
1659 (*this->prpos)--;
1660 return *this->prpos;
1663 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1664 /* ?_Gninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1665 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1666 /* ?_Gninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1667 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gninc, 4)
1668 wchar_t* __thiscall basic_streambuf_wchar__Gninc(basic_streambuf_wchar *this)
1670 TRACE("(%p)\n", this);
1671 (*this->prsize)--;
1672 return (*this->prpos)++;
1675 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1676 /* ?_Gnpreinc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1677 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1678 /* ?_Gnpreinc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1679 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Gnpreinc, 4)
1680 wchar_t* __thiscall basic_streambuf_wchar__Gnpreinc(basic_streambuf_wchar *this)
1682 TRACE("(%p)\n", this);
1683 (*this->prsize)--;
1684 (*this->prpos)++;
1685 return *this->prpos;
1688 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXPAPA_W0PAH001@Z */
1689 /* ?_Init@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAPEA_W0PEAH001@Z */
1690 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXPAPAG0PAH001@Z */
1691 /* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXPEAPEAG0PEAH001@Z */
1692 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Init, 28)
1693 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)
1695 TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc);
1697 this->prbuf = gf;
1698 this->pwbuf = pf;
1699 this->prpos = gn;
1700 this->pwpos = pn;
1701 this->prsize = gc;
1702 this->pwsize = pc;
1705 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
1706 /* ?_Lock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
1707 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
1708 /* ?_Lock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
1709 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Lock, 4)
1710 void __thiscall basic_streambuf_wchar__Lock(basic_streambuf_wchar *this)
1712 TRACE("(%p)\n", this);
1713 mutex_lock(&this->lock);
1716 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEHXZ */
1717 /* ?_Pnavail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBA_JXZ */
1718 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEHXZ */
1719 /* ?_Pnavail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBA_JXZ */
1720 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pnavail, 4)
1721 streamsize __thiscall basic_streambuf_wchar__Pnavail(const basic_streambuf_wchar *this)
1723 TRACE("(%p)\n", this);
1724 return *this->pwpos ? *this->pwsize : 0;
1727 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEPA_WXZ */
1728 /* ?_Pninc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAPEA_WXZ */
1729 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEPAGXZ */
1730 /* ?_Pninc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAPEAGXZ */
1731 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Pninc, 4)
1732 wchar_t* __thiscall basic_streambuf_wchar__Pninc(basic_streambuf_wchar *this)
1734 TRACE("(%p)\n", this);
1735 (*this->pwsize)--;
1736 return (*this->pwpos)++;
1739 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
1740 /* ?underflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
1741 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
1742 /* ?underflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
1743 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_underflow, 4)
1744 #define call_basic_streambuf_wchar_underflow(this) CALL_VTBL_FUNC(this, 24, \
1745 unsigned short, (basic_streambuf_wchar*), (this))
1746 unsigned short __thiscall basic_streambuf_wchar_underflow(basic_streambuf_wchar *this)
1748 TRACE("(%p)\n", this);
1749 return WEOF;
1752 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
1753 /* ?uflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
1754 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
1755 /* ?uflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
1756 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_uflow, 4)
1757 #define call_basic_streambuf_wchar_uflow(this) CALL_VTBL_FUNC(this, 28, \
1758 unsigned short, (basic_streambuf_wchar*), (this))
1759 unsigned short __thiscall basic_streambuf_wchar_uflow(basic_streambuf_wchar *this)
1761 int ret;
1763 TRACE("(%p)\n", this);
1765 if(call_basic_streambuf_wchar_underflow(this)==WEOF)
1766 return WEOF;
1768 ret = **this->prpos;
1769 (*this->prsize)--;
1770 (*this->prpos)++;
1771 return ret;
1774 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WIH@Z */
1775 /* ?_Xsgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_K_J@Z */
1776 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGIH@Z */
1777 /* ?_Xsgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_K_J@Z */
1778 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Xsgetn_s, 20)
1779 #define call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count) CALL_VTBL_FUNC(this, 28, \
1780 streamsize, (basic_streambuf_wchar*, wchar_t*, MSVCP_size_t, streamsize), (this, ptr, size, count))
1781 streamsize __thiscall basic_streambuf_wchar__Xsgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, MSVCP_size_t size, streamsize count)
1783 streamsize copied, chunk;
1784 unsigned short c;
1786 TRACE("(%p %p %lu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
1788 for(copied=0; copied<count && size;) {
1789 chunk = basic_streambuf_wchar__Gnavail(this);
1790 if(chunk > count-copied)
1791 chunk = count-copied;
1793 if(chunk > 0) {
1794 memcpy_s(ptr+copied, size, *this->prpos, chunk);
1795 *this->prpos += chunk;
1796 *this->prsize -= chunk;
1797 copied += chunk;
1798 size -= chunk;
1799 }else if((c = call_basic_streambuf_wchar_uflow(this)) != WEOF) {
1800 ptr[copied] = c;
1801 copied++;
1802 size--;
1803 }else {
1804 break;
1808 return copied;
1811 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
1812 /* ?_Sgetn_s@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
1813 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
1814 /* ?_Sgetn_s@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
1815 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Sgetn_s, 20)
1816 streamsize __thiscall basic_streambuf_wchar__Sgetn_s(basic_streambuf_wchar *this, wchar_t *ptr, MSVCP_size_t size, streamsize count)
1818 TRACE("(%p %p %lu %s)\n", this, ptr, size, wine_dbgstr_longlong(count));
1819 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, size, count);
1822 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
1823 /* ?_Unlock@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
1824 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
1825 /* ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
1826 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar__Unlock, 4)
1827 void __thiscall basic_streambuf_wchar__Unlock(basic_streambuf_wchar *this)
1829 TRACE("(%p)\n", this);
1830 mutex_unlock(&this->lock);
1833 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1834 /* ?eback@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1835 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1836 /* ?eback@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1837 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_eback, 4)
1838 wchar_t* __thiscall basic_streambuf_wchar_eback(const basic_streambuf_wchar *this)
1840 TRACE("(%p)\n", this);
1841 return *this->prbuf;
1844 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1845 /* ?gptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1846 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1847 /* ?gptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1848 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gptr, 4)
1849 wchar_t* __thiscall basic_streambuf_wchar_gptr(const basic_streambuf_wchar *this)
1851 TRACE("(%p)\n", this);
1852 return *this->prpos;
1855 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1856 /* ?egptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1857 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1858 /* ?egptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1859 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_egptr, 4)
1860 wchar_t* __thiscall basic_streambuf_wchar_egptr(const basic_streambuf_wchar *this)
1862 TRACE("(%p)\n", this);
1863 return *this->prpos+*this->prsize;
1866 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1867 /* ?epptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1868 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1869 /* ?epptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1870 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_epptr, 4)
1871 wchar_t* __thiscall basic_streambuf_wchar_epptr(const basic_streambuf_wchar *this)
1873 TRACE("(%p)\n", this);
1874 return *this->pwpos+*this->pwsize;
1877 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
1878 /* ?gbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
1879 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
1880 /* ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
1881 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_gbump, 8)
1882 void __thiscall basic_streambuf_wchar_gbump(basic_streambuf_wchar *this, int off)
1884 TRACE("(%p %d)\n", this, off);
1885 *this->prpos += off;
1886 *this->prsize -= off;
1889 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QBE?AVlocale@2@XZ */
1890 /* ?getloc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEBA?AVlocale@2@XZ */
1891 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QBE?AVlocale@2@XZ */
1892 /* ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEBA?AVlocale@2@XZ */
1893 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_getloc, 8)
1894 locale* __thiscall basic_streambuf_wchar_getloc(const basic_streambuf_wchar *this, locale *ret)
1896 TRACE("(%p)\n", this);
1897 return locale_copy_ctor(ret, this->loc);
1900 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
1901 /* ?imbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
1902 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
1903 /* ?imbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
1904 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_imbue, 8)
1905 #define call_basic_streambuf_wchar_imbue(this, loc) CALL_VTBL_FUNC(this, 56, \
1906 void, (basic_streambuf_wchar*, const locale*), (this, loc))
1907 void __thiscall basic_streambuf_wchar_imbue(basic_streambuf_wchar *this, const locale *loc)
1909 TRACE("(%p %p)\n", this, loc);
1912 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
1913 /* ?overflow@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
1914 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
1915 /* ?overflow@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
1916 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_overflow, 8)
1917 #define call_basic_streambuf_wchar_overflow(this, ch) CALL_VTBL_FUNC(this, 12, \
1918 unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
1919 unsigned short __thiscall basic_streambuf_wchar_overflow(basic_streambuf_wchar *this, unsigned short ch)
1921 TRACE("(%p %d)\n", this, ch);
1922 return WEOF;
1925 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
1926 /* ?pbackfail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
1927 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
1928 /* ?pbackfail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
1929 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbackfail, 8)
1930 #define call_basic_streambuf_wchar_pbackfail(this, ch) CALL_VTBL_FUNC(this, 16, \
1931 unsigned short, (basic_streambuf_wchar*, unsigned short), (this, ch))
1932 unsigned short __thiscall basic_streambuf_wchar_pbackfail(basic_streambuf_wchar *this, unsigned short ch)
1934 TRACE("(%p %d)\n", this, ch);
1935 return WEOF;
1938 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1939 /* ?pbase@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1940 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1941 /* ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1942 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbase, 4)
1943 wchar_t* __thiscall basic_streambuf_wchar_pbase(const basic_streambuf_wchar *this)
1945 TRACE("(%p)\n", this);
1946 return *this->pwbuf;
1949 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z */
1950 /* ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z */
1951 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z */
1952 /* ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z */
1953 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pbump, 8)
1954 void __thiscall basic_streambuf_wchar_pbump(basic_streambuf_wchar *this, int off)
1956 TRACE("(%p %d)\n", this, off);
1957 *this->pwpos += off;
1958 *this->pwsize -= off;
1961 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IBEPA_WXZ */
1962 /* ?pptr@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEBAPEA_WXZ */
1963 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ */
1964 /* ?pptr@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEBAPEAGXZ */
1965 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pptr, 4)
1966 wchar_t* __thiscall basic_streambuf_wchar_pptr(const basic_streambuf_wchar *this)
1968 TRACE("(%p)\n", this);
1969 return *this->pwpos;
1972 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1973 /* ?pubimbue@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1974 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
1975 /* ?pubimbue@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
1976 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubimbue, 12)
1977 locale* __thiscall basic_streambuf_wchar_pubimbue(basic_streambuf_wchar *this, locale *ret, const locale *loc)
1979 TRACE("(%p %p)\n", this, loc);
1980 memcpy(ret, this->loc, sizeof(locale));
1981 call_basic_streambuf_wchar_imbue(this, loc);
1982 locale_copy_ctor(this->loc, loc);
1983 return ret;
1986 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1987 /* ?seekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1988 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
1989 /* ?seekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
1990 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekoff, 24)
1991 #define call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 40, \
1992 fpos_int*, (basic_streambuf_wchar*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode))
1993 fpos_int* __thiscall basic_streambuf_wchar_seekoff(basic_streambuf_wchar *this,
1994 fpos_int *ret, streamoff off, int way, int mode)
1996 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
1997 ret->off = 0;
1998 ret->pos = -1;
1999 ret->state = 0;
2000 return ret;
2003 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
2004 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
2005 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
2006 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
2007 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff, 24)
2008 fpos_int* __thiscall basic_streambuf_wchar_pubseekoff(basic_streambuf_wchar *this,
2009 fpos_int *ret, streamoff off, int way, int mode)
2011 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
2012 return call_basic_streambuf_wchar_seekoff(this, ret, off, way, mode);
2015 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
2016 /* ?pubseekoff@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
2017 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
2018 /* ?pubseekoff@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
2019 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekoff_old, 24)
2020 fpos_int* __thiscall basic_streambuf_wchar_pubseekoff_old(basic_streambuf_wchar *this,
2021 fpos_int *ret, streamoff off, unsigned int way, unsigned int mode)
2023 TRACE("(%p %s %d %d)\n", this, wine_dbgstr_longlong(off), way, mode);
2024 return basic_streambuf_wchar_pubseekoff(this, ret, off, way, mode);
2027 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2028 /* ?seekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2029 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2030 /* ?seekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2031 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_seekpos, 36)
2032 #define call_basic_streambuf_wchar_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 44, \
2033 fpos_int*, (basic_streambuf_wchar*, fpos_int*, fpos_int, int), (this, ret, pos, mode))
2034 fpos_int* __thiscall basic_streambuf_wchar_seekpos(basic_streambuf_wchar *this,
2035 fpos_int *ret, fpos_int pos, int mode)
2037 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
2038 ret->off = 0;
2039 ret->pos = -1;
2040 ret->state = 0;
2041 return ret;
2044 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
2045 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
2046 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
2047 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
2048 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos, 36)
2049 fpos_int* __thiscall basic_streambuf_wchar_pubseekpos(basic_streambuf_wchar *this,
2050 fpos_int *ret, fpos_int pos, int mode)
2052 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
2053 return call_basic_streambuf_wchar_seekpos(this, ret, pos, mode);
2056 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
2057 /* ?pubseekpos@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
2058 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
2059 /* ?pubseekpos@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
2060 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubseekpos_old, 36)
2061 fpos_int* __thiscall basic_streambuf_wchar_pubseekpos_old(basic_streambuf_wchar *this,
2062 fpos_int *ret, fpos_int pos, unsigned int mode)
2064 TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode);
2065 return basic_streambuf_wchar_pubseekpos(this, ret, pos, mode);
2068 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEPAV12@PA_WH@Z */
2069 /* ?setbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV12@PEA_W_J@Z */
2070 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEPAV12@PAGH@Z */
2071 /* ?setbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAPEAV12@PEAG_J@Z */
2072 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_setbuf, 16)
2073 #define call_basic_streambuf_wchar_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 48, \
2074 basic_streambuf_wchar*, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, buf, count))
2075 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_setbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
2077 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
2078 return this;
2081 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PA_WH@Z */
2082 /* ?pubsetbuf@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEA_W_J@Z */
2083 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PAGH@Z */
2084 /* ?pubsetbuf@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEAG_J@Z */
2085 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsetbuf, 16)
2086 basic_streambuf_wchar* __thiscall basic_streambuf_wchar_pubsetbuf(basic_streambuf_wchar *this, wchar_t *buf, streamsize count)
2088 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
2089 return call_basic_streambuf_wchar_setbuf(this, buf, count);
2092 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
2093 /* ?sync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
2094 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2095 /* ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
2096 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sync, 4)
2097 #define call_basic_streambuf_wchar_sync(this) CALL_VTBL_FUNC(this, 52, \
2098 int, (basic_streambuf_wchar*), (this))
2099 int __thiscall basic_streambuf_wchar_sync(basic_streambuf_wchar *this)
2101 TRACE("(%p)\n", this);
2102 return 0;
2105 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
2106 /* ?pubsync@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
2107 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
2108 /* ?pubsync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHXZ */
2109 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_pubsync, 4)
2110 int __thiscall basic_streambuf_wchar_pubsync(basic_streambuf_wchar *this)
2112 TRACE("(%p)\n", this);
2113 return call_basic_streambuf_wchar_sync(this);
2116 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
2117 /* ?sgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
2118 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
2119 /* ?sgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
2120 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetn, 16)
2121 streamsize __thiscall basic_streambuf_wchar_sgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2123 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2124 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, -1, count);
2127 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
2128 /* ?showmanyc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JXZ */
2129 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
2130 /* ?showmanyc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JXZ */
2131 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_showmanyc, 4)
2132 #define call_basic_streambuf_wchar_showmanyc(this) CALL_VTBL_FUNC(this, 20, \
2133 streamsize, (basic_streambuf_wchar*), (this))
2134 streamsize __thiscall basic_streambuf_wchar_showmanyc(basic_streambuf_wchar *this)
2136 TRACE("(%p)\n", this);
2137 return 0;
2140 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
2141 /* ?in_avail@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JXZ */
2142 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHXZ */
2143 /* ?in_avail@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JXZ */
2144 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_in_avail, 4)
2145 streamsize __thiscall basic_streambuf_wchar_in_avail(basic_streambuf_wchar *this)
2147 streamsize ret;
2149 TRACE("(%p)\n", this);
2151 ret = basic_streambuf_wchar__Gnavail(this);
2152 return ret ? ret : call_basic_streambuf_wchar_showmanyc(this);
2155 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
2156 /* ?sputbackc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
2157 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
2158 /* ?sputbackc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
2159 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputbackc, 8)
2160 unsigned short __thiscall basic_streambuf_wchar_sputbackc(basic_streambuf_wchar *this, wchar_t ch)
2162 TRACE("(%p %d)\n", this, ch);
2163 if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) {
2164 (*this->prsize)++;
2165 (*this->prpos)--;
2166 return ch;
2169 return call_basic_streambuf_wchar_pbackfail(this, ch);
2172 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEG_W@Z */
2173 /* ?sputc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAG_W@Z */
2174 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGG@Z */
2175 /* ?sputc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAHG@Z */
2176 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputc, 8)
2177 unsigned short __thiscall basic_streambuf_wchar_sputc(basic_streambuf_wchar *this, wchar_t ch)
2179 TRACE("(%p %d)\n", this, ch);
2180 return basic_streambuf_wchar__Pnavail(this) ?
2181 (*basic_streambuf_wchar__Pninc(this) = ch) :
2182 call_basic_streambuf_wchar_overflow(this, ch);
2185 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2186 /* ?sungetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2187 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2188 /* ?sungetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2189 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sungetc, 4)
2190 unsigned short __thiscall basic_streambuf_wchar_sungetc(basic_streambuf_wchar *this)
2192 TRACE("(%p)\n", this);
2193 if(*this->prpos && *this->prpos>*this->prbuf) {
2194 (*this->prsize)++;
2195 (*this->prpos)--;
2196 return **this->prpos;
2199 return call_basic_streambuf_wchar_pbackfail(this, WEOF);
2202 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
2203 /* ?stossc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
2204 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
2205 /* ?stossc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
2206 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_stossc, 4)
2207 void __thiscall basic_streambuf_wchar_stossc(basic_streambuf_wchar *this)
2209 TRACE("(%p)\n", this);
2210 if(basic_streambuf_wchar__Gnavail(this))
2211 basic_streambuf_wchar__Gninc(this);
2212 else
2213 call_basic_streambuf_wchar_uflow(this);
2216 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2217 /* ?sbumpc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2218 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2219 /* ?sbumpc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2220 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sbumpc, 4)
2221 unsigned short __thiscall basic_streambuf_wchar_sbumpc(basic_streambuf_wchar *this)
2223 TRACE("(%p)\n", this);
2224 return basic_streambuf_wchar__Gnavail(this) ?
2225 *basic_streambuf_wchar__Gninc(this) : call_basic_streambuf_wchar_uflow(this);
2228 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2229 /* ?sgetc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2230 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2231 /* ?sgetc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2232 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sgetc, 4)
2233 unsigned short __thiscall basic_streambuf_wchar_sgetc(basic_streambuf_wchar *this)
2235 TRACE("(%p)\n", this);
2236 return basic_streambuf_wchar__Gnavail(this) ?
2237 *basic_streambuf_wchar_gptr(this) : call_basic_streambuf_wchar_underflow(this);
2240 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
2241 /* ?snextc@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
2242 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEGXZ */
2243 /* ?snextc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAAGXZ */
2244 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_snextc, 4)
2245 unsigned short __thiscall basic_streambuf_wchar_snextc(basic_streambuf_wchar *this)
2247 TRACE("(%p)\n", this);
2249 if(basic_streambuf_wchar__Gnavail(this) > 1)
2250 return *basic_streambuf_wchar__Gnpreinc(this);
2251 return basic_streambuf_wchar_sbumpc(this)==WEOF ?
2252 WEOF : basic_streambuf_wchar_sgetc(this);
2255 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPA_WH@Z */
2256 /* ?xsgetn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEA_W_J@Z */
2257 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPAGH@Z */
2258 /* ?xsgetn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEAG_J@Z */
2259 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsgetn, 16)
2260 #define call_basic_streambuf_wchar_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 32, \
2261 streamsize, (basic_streambuf_wchar*, wchar_t*, streamsize), (this, ptr, count))
2262 streamsize __thiscall basic_streambuf_wchar_xsgetn(basic_streambuf_wchar *this, wchar_t *ptr, streamsize count)
2264 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2265 return call_basic_streambuf_wchar__Xsgetn_s(this, ptr, -1, count);
2268 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MAEHPB_WH@Z */
2269 /* ?xsputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@MEAA_JPEB_W_J@Z */
2270 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHPBGH@Z */
2271 /* ?xsputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MEAA_JPEBG_J@Z */
2272 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_xsputn, 16)
2273 #define call_basic_streambuf_wchar_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 36, \
2274 streamsize, (basic_streambuf_wchar*, const wchar_t*, streamsize), (this, ptr, count))
2275 streamsize __thiscall basic_streambuf_wchar_xsputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2277 streamsize copied, chunk;
2279 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2281 for(copied=0; copied<count;) {
2282 chunk = basic_streambuf_wchar__Pnavail(this);
2283 if(chunk > count-copied)
2284 chunk = count-copied;
2286 if(chunk > 0) {
2287 memcpy(*this->pwpos, ptr+copied, chunk);
2288 *this->pwpos += chunk;
2289 *this->pwsize -= chunk;
2290 copied += chunk;
2291 }else if(call_basic_streambuf_wchar_overflow(this, ptr[copied]) != WEOF) {
2292 copied++;
2293 }else {
2294 break;
2298 return copied;
2301 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QAEHPB_WH@Z */
2302 /* ?sputn@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@QEAA_JPEB_W_J@Z */
2303 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEHPBGH@Z */
2304 /* ?sputn@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QEAA_JPEBG_J@Z */
2305 DEFINE_THISCALL_WRAPPER(basic_streambuf_wchar_sputn, 16)
2306 streamsize __thiscall basic_streambuf_wchar_sputn(basic_streambuf_wchar *this, const wchar_t *ptr, streamsize count)
2308 TRACE("(%p %p %s)\n", this, ptr, wine_dbgstr_longlong(count));
2309 return call_basic_streambuf_wchar_xsputn(this, ptr, count);
2312 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
2313 /* ?_Stinit@?1??_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
2314 int basic_filebuf_char__Init__Stinit = 0;
2316 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
2317 /* ?_Init@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
2318 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Init, 12)
2319 void __thiscall basic_filebuf_char__Init(basic_filebuf_char *this, FILE *file, basic_filebuf__Initfl which)
2321 TRACE("(%p %p %d)\n", this, file, which);
2323 this->cvt = NULL;
2324 this->wrotesome = FALSE;
2325 this->state = basic_filebuf_char__Init__Stinit;
2326 this->close = (which == INITFL_open);
2327 this->file = file;
2329 basic_streambuf_char__Init_empty(&this->base);
2330 if(file)
2331 basic_streambuf_char__Init(&this->base, &file->_base, &file->_ptr,
2332 &file->_cnt, &file->_base, &file->_ptr, &file->_cnt);
2335 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAEXPAV?$codecvt@DDH@2@@Z */
2336 /* ?_Initcvt@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$codecvt@DDH@2@@Z */
2337 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Initcvt, 8)
2338 void __thiscall basic_filebuf_char__Initcvt(basic_filebuf_char *this, codecvt_char *cvt)
2340 TRACE("(%p %p)\n", this, cvt);
2342 if(codecvt_base_always_noconv(&cvt->base)) {
2343 this->cvt = NULL;
2344 }else {
2345 basic_streambuf_char__Init_empty(&this->base);
2346 this->cvt = cvt;
2350 /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IAE_NXZ */
2351 /* ?_Endwrite@?$basic_filebuf@DU?$char_traits@D@std@@@std@@IEAA_NXZ */
2352 DEFINE_THISCALL_WRAPPER(basic_filebuf_char__Endwrite, 4)
2353 MSVCP_bool __thiscall basic_filebuf_char__Endwrite(basic_filebuf_char *this)
2355 TRACE("(%p)\n", this);
2357 if(!this->wrotesome || !this->cvt)
2358 return TRUE;
2361 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
2362 return FALSE;
2364 while(1) {
2365 /* TODO: check if we need a dynamic buffer here */
2366 char buf[128];
2367 char *next;
2368 int ret;
2370 ret = codecvt_char_unshift(this->cvt, &this->state, buf, buf+sizeof(buf), &next);
2371 switch(ret) {
2372 case CODECVT_ok:
2373 this->wrotesome = FALSE;
2374 /* fall through */
2375 case CODECVT_partial:
2376 if(!fwrite(buf, next-buf, 1, this->file))
2377 return FALSE;
2378 if(this->wrotesome)
2379 break;
2380 /* fall through */
2381 case CODECVT_noconv:
2382 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
2383 return FALSE;
2384 return TRUE;
2385 default:
2386 return FALSE;
2391 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@XZ */
2392 /* ?close@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@XZ */
2393 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_close, 4)
2394 basic_filebuf_char* __thiscall basic_filebuf_char_close(basic_filebuf_char *this)
2396 basic_filebuf_char *ret = this;
2398 TRACE("(%p)\n", this);
2400 if(!this->file)
2401 return NULL;
2403 /* TODO: handle exceptions */
2404 if(!basic_filebuf_char__Endwrite(this))
2405 ret = NULL;
2406 if(!fclose(this->file))
2407 ret = NULL;
2409 basic_filebuf_char__Init(this, NULL, INITFL_close);
2410 return ret;
2413 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
2414 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
2415 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_file, 8)
2416 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_file(basic_filebuf_char *this, FILE *file)
2418 TRACE("(%p %p)\n", this, file);
2420 basic_streambuf_char_ctor(&this->base);
2421 this->base.vtable = &MSVCP_basic_filebuf_char_vtable;
2423 basic_filebuf_char__Init(this, file, INITFL_new);
2424 return this;
2427 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEXXZ */
2428 /* ??_F?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */
2429 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor, 4)
2430 basic_filebuf_char* __thiscall basic_filebuf_char_ctor(basic_filebuf_char *this)
2432 return basic_filebuf_char_ctor_file(this, NULL);
2435 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
2436 /* ??0?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
2437 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_ctor_uninitialized, 8)
2438 basic_filebuf_char* __thiscall basic_filebuf_char_ctor_uninitialized(basic_filebuf_char *this, int uninitialized)
2440 TRACE("(%p %d)\n", this, uninitialized);
2442 basic_streambuf_char_ctor(&this->base);
2443 this->base.vtable = &MSVCP_basic_filebuf_char_vtable;
2444 return this;
2447 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UAE@XZ */
2448 /* ??1?$basic_filebuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */
2449 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_dtor, 4)
2450 void __thiscall basic_filebuf_char_dtor(basic_filebuf_char *this)
2452 TRACE("(%p)\n", this);
2454 if(this->close)
2455 basic_filebuf_char_close(this);
2456 basic_streambuf_char_dtor(&this->base);
2459 DEFINE_THISCALL_WRAPPER(MSVCP_basic_filebuf_char_vector_dtor, 8)
2460 basic_filebuf_char* __thiscall MSVCP_basic_filebuf_char_vector_dtor(basic_filebuf_char *this, unsigned int flags)
2462 TRACE("(%p %x)\n", this, flags);
2463 if(flags & 2) {
2464 /* we have an array, with the number of elements stored before the first object */
2465 int i, *ptr = (int *)this-1;
2467 for(i=*ptr-1; i>=0; i--)
2468 basic_filebuf_char_dtor(this+i);
2469 MSVCRT_operator_delete(ptr);
2470 } else {
2471 basic_filebuf_char_dtor(this);
2472 if(flags & 1)
2473 MSVCRT_operator_delete(this);
2476 return this;
2479 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QBE_NXZ */
2480 /* ?is_open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
2481 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_is_open, 4)
2482 MSVCP_bool __thiscall basic_filebuf_char_is_open(const basic_filebuf_char *this)
2484 TRACE("(%p)\n", this);
2485 return this->file != NULL;
2488 /* ?_Fiopen@std@@YAPAU_iobuf@@PB_WHH@Z */
2489 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEB_WHH@Z */
2490 FILE* __cdecl _Fiopen_wchar(const wchar_t *name, int mode, int prot)
2492 static const wchar_t rW[] = {'r',0};
2493 static const struct {
2494 int mode;
2495 const wchar_t str[4];
2496 const wchar_t str_bin[4];
2497 } str_mode[] = {
2498 {OPENMODE_out, {'w',0}, {'w','b',0}},
2499 {OPENMODE_out|OPENMODE_app, {'a',0}, {'a','b',0}},
2500 {OPENMODE_app, {'a',0}, {'a','b',0}},
2501 {OPENMODE_out|OPENMODE_trunc, {'w',0}, {'w','b',0}},
2502 {OPENMODE_in, {'r',0}, {'r','b',0}},
2503 {OPENMODE_in|OPENMODE_out, {'r','+',0}, {'r','+','b',0}},
2504 {OPENMODE_in|OPENMODE_out|OPENMODE_trunc, {'w','+',0}, {'w','+','b',0}},
2505 {OPENMODE_in|OPENMODE_out|OPENMODE_app, {'a','+',0}, {'a','+','b',0}},
2506 {OPENMODE_in|OPENMODE_app, {'a','+',0}, {'a','+','b',0}}
2509 int real_mode = mode & ~(OPENMODE_ate|OPENMODE__Nocreate|OPENMODE__Noreplace|OPENMODE_binary);
2510 int mode_idx;
2511 FILE *f = NULL;
2513 TRACE("(%s %d %d)\n", debugstr_w(name), mode, prot);
2515 for(mode_idx=0; mode_idx<sizeof(str_mode)/sizeof(str_mode[0]); mode_idx++)
2516 if(str_mode[mode_idx].mode == real_mode)
2517 break;
2518 if(mode_idx == sizeof(str_mode)/sizeof(str_mode[0]))
2519 return NULL;
2521 if((mode & OPENMODE__Nocreate) && !(f = _wfopen(name, rW)))
2522 return NULL;
2523 else if(f)
2524 fclose(f);
2526 if((mode & OPENMODE__Noreplace) && (mode & (OPENMODE_out|OPENMODE_app))
2527 && (f = _wfopen(name, rW))) {
2528 fclose(f);
2529 return NULL;
2532 f = _wfsopen(name, (mode & OPENMODE_binary) ? str_mode[mode_idx].str_bin
2533 : str_mode[mode_idx].str, prot);
2534 if(!f)
2535 return NULL;
2537 if((mode & OPENMODE_ate) && fseek(f, 0, SEEK_END)) {
2538 fclose(f);
2539 return NULL;
2542 return f;
2545 /* ?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z */
2546 /* ?_Fiopen@std@@YAPEAU_iobuf@@PEBDHH@Z */
2547 FILE* __cdecl _Fiopen(const char *name, int mode, int prot)
2549 wchar_t nameW[FILENAME_MAX];
2551 TRACE("(%s %d %d)\n", name, mode, prot);
2553 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
2554 return NULL;
2555 return _Fiopen_wchar(nameW, mode, prot);
2558 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WHH@Z */
2559 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
2560 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGHH@Z */
2561 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGHH@Z */
2562 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar, 16)
2563 basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar(basic_filebuf_char *this, const wchar_t *name, int mode, int prot)
2565 FILE *f = NULL;
2567 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
2569 if(basic_filebuf_char_is_open(this))
2570 return NULL;
2572 if(!(f = _Fiopen_wchar(name, mode, prot)))
2573 return NULL;
2575 basic_filebuf_char__Init(this, f, INITFL_open);
2576 basic_filebuf_char__Initcvt(this, codecvt_char_use_facet(this->base.loc));
2577 return this;
2580 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PB_WI@Z */
2581 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEB_WI@Z */
2582 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBGI@Z */
2583 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBGI@Z */
2584 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_wchar_mode, 12)
2585 basic_filebuf_char* __thiscall basic_filebuf_char_open_wchar_mode(basic_filebuf_char *this, const wchar_t *name, unsigned int mode)
2587 return basic_filebuf_char_open_wchar(this, name, mode, SH_DENYNO);
2590 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDHH@Z */
2591 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDHH@Z */
2592 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open, 16)
2593 basic_filebuf_char* __thiscall basic_filebuf_char_open(basic_filebuf_char *this, const char *name, int mode, int prot)
2595 wchar_t nameW[FILENAME_MAX];
2597 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
2599 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
2600 return NULL;
2601 return basic_filebuf_char_open_wchar(this, nameW, mode, prot);
2604 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PBDI@Z */
2605 /* ?open@?$basic_filebuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEBDI@Z */
2606 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_open_mode, 12)
2607 basic_filebuf_char* __thiscall basic_filebuf_char_open_mode(basic_filebuf_char *this, const char *name, unsigned int mode)
2609 return basic_filebuf_char_open(this, name, mode, SH_DENYNO);
2612 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
2613 /* ?overflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
2614 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_overflow, 8)
2615 int __thiscall basic_filebuf_char_overflow(basic_filebuf_char *this, int c)
2617 char buf[8], *dyn_buf;
2618 char ch = c, *to_next;
2619 const char *from_next;
2620 int ret, max_size;
2623 TRACE("(%p %d)\n", this, c);
2625 if(!basic_filebuf_char_is_open(this))
2626 return EOF;
2627 if(c == EOF)
2628 return !c;
2630 if(!this->cvt)
2631 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
2633 from_next = &ch;
2634 do {
2635 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1,
2636 &from_next, buf, buf+sizeof(buf), &to_next);
2638 switch(ret) {
2639 case CODECVT_partial:
2640 if(to_next == buf)
2641 break;
2642 /* fall through */
2643 case CODECVT_ok:
2644 if(!fwrite(buf, to_next-buf, 1, this->file))
2645 return EOF;
2646 if(ret == CODECVT_partial)
2647 continue;
2648 return c;
2649 case CODECVT_noconv:
2650 return fwrite(&ch, sizeof(char), 1, this->file) ? c : EOF;
2651 default:
2652 return EOF;
2655 break;
2656 } while(1);
2658 max_size = codecvt_base_max_length(&this->cvt->base);
2659 dyn_buf = malloc(max_size);
2660 if(!dyn_buf)
2661 return EOF;
2663 ret = codecvt_char_out(this->cvt, &this->state, from_next, &ch+1,
2664 &from_next, dyn_buf, dyn_buf+max_size, &to_next);
2666 switch(ret) {
2667 case CODECVT_ok:
2668 ret = fwrite(dyn_buf, to_next-dyn_buf, 1, this->file);
2669 free(dyn_buf);
2670 return ret ? c : EOF;
2671 case CODECVT_partial:
2672 ERR("buffer should be big enough to store all output\n");
2673 /* fall through */
2674 default:
2675 free(dyn_buf);
2676 return EOF;
2680 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */
2681 /* ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */
2682 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_pbackfail, 8)
2683 int __thiscall basic_filebuf_char_pbackfail(basic_filebuf_char *this, int c)
2685 TRACE("(%p %d)\n", this, c);
2687 if(!basic_filebuf_char_is_open(this))
2688 return EOF;
2690 if(basic_streambuf_char_gptr(&this->base)>basic_streambuf_char_eback(&this->base)
2691 && (c==EOF || basic_streambuf_char_gptr(&this->base)[-1]==(char)c)) {
2692 basic_streambuf_char__Gndec(&this->base);
2693 return c==EOF ? !c : c;
2694 }else if(c!=EOF && !this->cvt) {
2695 return ungetc(c, this->file);
2698 return EOF;
2701 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2702 /* ?uflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2703 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_uflow, 4)
2704 int __thiscall basic_filebuf_char_uflow(basic_filebuf_char *this)
2706 char ch, buf[128], *to_next;
2707 const char *buf_next;
2708 int c, i;
2710 TRACE("(%p)\n", this);
2712 if(!basic_filebuf_char_is_open(this))
2713 return EOF;
2715 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
2716 return *basic_streambuf_char__Gninc(&this->base);
2718 c = fgetc(this->file);
2719 if(!this->cvt || c==EOF)
2720 return c;
2722 buf_next = buf;
2723 for(i=0; i < sizeof(buf)/sizeof(buf[0]); i++) {
2724 buf[i] = c;
2726 switch(codecvt_char_in(this->cvt, &this->state, buf_next,
2727 buf+i+1, &buf_next, &ch, &ch+1, &to_next)) {
2728 case CODECVT_partial:
2729 case CODECVT_ok:
2730 if(to_next == &ch) {
2731 c = fgetc(this->file);
2732 if(c == EOF)
2733 return EOF;
2734 continue;
2737 for(i--; i>=buf_next-buf; i--)
2738 ungetc(buf[i], this->file);
2739 return ch;
2740 case CODECVT_noconv:
2741 return buf[0];
2742 default:
2743 return EOF;
2747 FIXME("buffer is too small\n");
2748 return EOF;
2751 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2752 /* ?underflow@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2753 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_underflow, 4)
2754 int __thiscall basic_filebuf_char_underflow(basic_filebuf_char *this)
2756 int ret;
2758 TRACE("(%p)\n", this);
2760 if(basic_streambuf_char_gptr(&this->base) < basic_streambuf_char_egptr(&this->base))
2761 return *basic_streambuf_char_gptr(&this->base);
2763 ret = call_basic_streambuf_char_uflow(&this->base);
2764 if(ret != EOF)
2765 ret = call_basic_streambuf_char_pbackfail(&this->base, ret);
2766 return ret;
2769 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
2770 /* ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
2771 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekoff, 24)
2772 fpos_int* __thiscall basic_filebuf_char_seekoff(basic_filebuf_char *this,
2773 fpos_int *ret, streamoff off, int way, int mode)
2775 fpos_t pos;
2777 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
2779 if(!basic_filebuf_char_is_open(this) || !basic_filebuf_char__Endwrite(this)
2780 || fseek(this->file, off, way)) {
2781 ret->off = 0;
2782 ret->pos = -1;
2783 ret->state = 0;
2784 return ret;
2787 fgetpos(this->file, &pos);
2788 ret->off = 0;
2789 ret->pos = pos;
2790 ret->state = this->state;
2791 return ret;
2794 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
2795 /* ?seekpos@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
2796 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_seekpos, 36)
2797 fpos_int* __thiscall basic_filebuf_char_seekpos(basic_filebuf_char *this,
2798 fpos_int *ret, fpos_int pos, int mode)
2800 fpos_t fpos;
2802 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
2804 if(!basic_filebuf_char_is_open(this) || !basic_filebuf_char__Endwrite(this)
2805 || fseek(this->file, (LONG)pos.pos, SEEK_SET)
2806 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
2807 ret->off = 0;
2808 ret->pos = -1;
2809 ret->state = 0;
2810 return ret;
2813 fgetpos(this->file, &fpos);
2814 ret->off = 0;
2815 ret->pos = fpos;
2816 ret->state = this->state;
2817 return ret;
2820 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PADH@Z */
2821 /* ?setbuf@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAD_J@Z */
2822 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_setbuf, 16)
2823 basic_streambuf_char* __thiscall basic_filebuf_char_setbuf(basic_filebuf_char *this, char *buf, streamsize count)
2825 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
2827 if(!basic_filebuf_char_is_open(this))
2828 return NULL;
2830 if(setvbuf(this->file, buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count))
2831 return NULL;
2833 basic_filebuf_char__Init(this, this->file, INITFL_open);
2834 return &this->base;
2837 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHXZ */
2838 /* ?sync@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */
2839 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_sync, 4)
2840 int __thiscall basic_filebuf_char_sync(basic_filebuf_char *this)
2842 TRACE("(%p)\n", this);
2844 if(!basic_filebuf_char_is_open(this))
2845 return 0;
2847 if(call_basic_streambuf_char_overflow(&this->base, EOF) == EOF)
2848 return 0;
2849 return fflush(this->file);
2852 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */
2853 /* ?imbue@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */
2854 DEFINE_THISCALL_WRAPPER(basic_filebuf_char_imbue, 8)
2855 void __thiscall basic_filebuf_char_imbue(basic_filebuf_char *this, const locale *loc)
2857 TRACE("(%p %p)\n", this, loc);
2858 basic_filebuf_char__Initcvt(this, codecvt_char_use_facet(loc));
2861 /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
2862 /* ?_Stinit@?1??_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
2863 int basic_filebuf_wchar__Init__Stinit = 0;
2865 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@23@@Z@4HA */
2866 /* ?_Stinit@?1??_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@23@@Z@4HA */
2867 int basic_filebuf_short__Init__Stinit = 0;
2869 /* ?_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
2870 /* ?_Init@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
2871 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Init, 12)
2872 void __thiscall basic_filebuf_wchar__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
2874 TRACE("(%p %p %d)\n", this, file, which);
2876 this->cvt = NULL;
2877 this->wrotesome = FALSE;
2878 this->state = basic_filebuf_wchar__Init__Stinit;
2879 this->close = (which == INITFL_open);
2880 this->file = file;
2882 basic_streambuf_wchar__Init_empty(&this->base);
2885 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAU_iobuf@@W4_Initfl@12@@Z */
2886 /* ?_Init@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAU_iobuf@@W4_Initfl@12@@Z */
2887 DEFINE_THISCALL_WRAPPER(basic_filebuf_short__Init, 12)
2888 void __thiscall basic_filebuf_short__Init(basic_filebuf_wchar *this, FILE *file, basic_filebuf__Initfl which)
2890 TRACE("(%p %p %d)\n", this, file, which);
2892 this->cvt = NULL;
2893 this->wrotesome = FALSE;
2894 this->state = basic_filebuf_short__Init__Stinit;
2895 this->close = (which == INITFL_open);
2896 this->file = file;
2898 basic_streambuf_wchar__Init_empty(&this->base);
2901 /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$codecvt@_WDH@2@@Z */
2902 /* ?_Initcvt@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$codecvt@_WDH@2@@Z */
2903 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAEXPAV?$codecvt@GDH@2@@Z */
2904 /* ?_Initcvt@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$codecvt@GDH@2@@Z */
2905 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Initcvt, 8)
2906 void __thiscall basic_filebuf_wchar__Initcvt(basic_filebuf_wchar *this, codecvt_wchar *cvt)
2908 TRACE("(%p %p)\n", this, cvt);
2910 if(codecvt_base_always_noconv(&cvt->base)) {
2911 this->cvt = NULL;
2912 }else {
2913 basic_streambuf_wchar__Init_empty(&this->base);
2914 this->cvt = cvt;
2918 /* ?_Endwrite@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IAE_NXZ */
2919 /* ?_Endwrite@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@IEAA_NXZ */
2920 /* ?_Endwrite@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IAE_NXZ */
2921 /* ?_Endwrite@?$basic_filebuf@GU?$char_traits@G@std@@@std@@IEAA_NXZ */
2922 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar__Endwrite, 4)
2923 MSVCP_bool __thiscall basic_filebuf_wchar__Endwrite(basic_filebuf_wchar *this)
2925 TRACE("(%p)\n", this);
2927 if(!this->wrotesome || !this->cvt)
2928 return TRUE;
2930 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
2931 return FALSE;
2933 while(1) {
2934 /* TODO: check if we need a dynamic buffer here */
2935 char buf[128];
2936 char *next;
2937 int ret;
2939 ret = codecvt_wchar_unshift(this->cvt, &this->state, buf, buf+sizeof(buf), &next);
2940 switch(ret) {
2941 case CODECVT_ok:
2942 this->wrotesome = FALSE;
2943 /* fall through */
2944 case CODECVT_partial:
2945 if(!fwrite(buf, next-buf, 1, this->file))
2946 return FALSE;
2947 if(this->wrotesome)
2948 break;
2949 /* fall through */
2950 case CODECVT_noconv:
2951 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
2952 return FALSE;
2953 return TRUE;
2954 default:
2955 return FALSE;
2960 /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@XZ */
2961 /* ?close@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@XZ */
2962 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@XZ */
2963 /* ?close@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@XZ */
2964 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_close, 4)
2965 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_close(basic_filebuf_wchar *this)
2967 basic_filebuf_wchar *ret = this;
2969 TRACE("(%p)\n", this);
2971 if(!this->file)
2972 return NULL;
2974 /* TODO: handle exceptions */
2975 if(!basic_filebuf_wchar__Endwrite(this))
2976 ret = NULL;
2977 if(!fclose(this->file))
2978 ret = NULL;
2980 basic_filebuf_wchar__Init(this, NULL, INITFL_close);
2981 return ret;
2984 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
2985 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
2986 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_file, 8)
2987 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_file(basic_filebuf_wchar *this, FILE *file)
2989 TRACE("(%p %p)\n", this, file);
2991 basic_streambuf_wchar_ctor(&this->base);
2992 this->base.vtable = &MSVCP_basic_filebuf_wchar_vtable;
2994 basic_filebuf_wchar__Init(this, file, INITFL_new);
2995 return this;
2998 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
2999 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
3000 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_file, 8)
3001 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_file(basic_filebuf_wchar *this, FILE *file)
3003 TRACE("(%p %p)\n", this, file);
3005 basic_streambuf_short_ctor(&this->base);
3006 this->base.vtable = &MSVCP_basic_filebuf_short_vtable;
3008 basic_filebuf_short__Init(this, file, INITFL_new);
3009 return this;
3012 /* ??_F?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
3013 /* ??_F?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
3014 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor, 4)
3015 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor(basic_filebuf_wchar *this)
3017 return basic_filebuf_wchar_ctor_file(this, NULL);
3020 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEXXZ */
3021 /* ??_F?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAXXZ */
3022 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor, 4)
3023 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor(basic_filebuf_wchar *this)
3025 return basic_filebuf_short_ctor_file(this, NULL);
3028 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */
3029 /* ??0?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
3030 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_ctor_uninitialized, 8)
3031 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
3033 TRACE("(%p %d)\n", this, uninitialized);
3035 basic_streambuf_wchar_ctor(&this->base);
3036 this->base.vtable = &MSVCP_basic_filebuf_wchar_vtable;
3037 return this;
3040 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
3041 /* ??0?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
3042 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_ctor_uninitialized, 8)
3043 basic_filebuf_wchar* __thiscall basic_filebuf_short_ctor_uninitialized(basic_filebuf_wchar *this, int uninitialized)
3045 TRACE("(%p %d)\n", this, uninitialized);
3047 basic_streambuf_short_ctor(&this->base);
3048 this->base.vtable = &MSVCP_basic_filebuf_short_vtable;
3049 return this;
3052 /* ??1?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
3053 /* ??1?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
3054 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UAE@XZ */
3055 /* ??1?$basic_filebuf@GU?$char_traits@G@std@@@std@@UEAA@XZ */
3056 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_dtor, 4)
3057 void __thiscall basic_filebuf_wchar_dtor(basic_filebuf_wchar *this)
3059 TRACE("(%p)\n", this);
3061 if(this->close)
3062 basic_filebuf_wchar_close(this);
3063 basic_streambuf_wchar_dtor(&this->base);
3066 DEFINE_THISCALL_WRAPPER(MSVCP_basic_filebuf_wchar_vector_dtor, 8)
3067 basic_filebuf_wchar* __thiscall MSVCP_basic_filebuf_wchar_vector_dtor(basic_filebuf_wchar *this, unsigned int flags)
3069 TRACE("(%p %x)\n", this, flags);
3070 if(flags & 2) {
3071 /* we have an array, with the number of elements stored before the first object */
3072 int i, *ptr = (int *)this-1;
3074 for(i=*ptr-1; i>=0; i--)
3075 basic_filebuf_wchar_dtor(this+i);
3076 MSVCRT_operator_delete(ptr);
3077 } else {
3078 basic_filebuf_wchar_dtor(this);
3079 if(flags & 1)
3080 MSVCRT_operator_delete(this);
3083 return this;
3086 DEFINE_THISCALL_WRAPPER(MSVCP_basic_filebuf_short_vector_dtor, 8)
3087 basic_filebuf_wchar* __thiscall MSVCP_basic_filebuf_short_vector_dtor(basic_filebuf_wchar *this, unsigned int flags)
3089 return MSVCP_basic_filebuf_wchar_vector_dtor(this, flags);
3092 /* ?is_open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
3093 /* ?is_open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
3094 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QBE_NXZ */
3095 /* ?is_open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
3096 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_is_open, 4)
3097 MSVCP_bool __thiscall basic_filebuf_wchar_is_open(const basic_filebuf_wchar *this)
3099 TRACE("(%p)\n", this);
3100 return this->file != NULL;
3103 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PB_WHH@Z */
3104 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3105 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBGHH@Z */
3106 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3107 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_wchar, 16)
3108 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot)
3110 FILE *f = NULL;
3112 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3114 if(basic_filebuf_wchar_is_open(this))
3115 return NULL;
3117 if(!(f = _Fiopen_wchar(name, mode, prot)))
3118 return NULL;
3120 basic_filebuf_wchar__Init(this, f, INITFL_open);
3121 basic_filebuf_wchar__Initcvt(this, codecvt_wchar_use_facet(this->base.loc));
3122 return this;
3125 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WHH@Z */
3126 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WHH@Z */
3127 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGHH@Z */
3128 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGHH@Z */
3129 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_wchar, 16)
3130 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_wchar(basic_filebuf_wchar *this, const wchar_t *name, int mode, int prot)
3132 FILE *f = NULL;
3134 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
3136 if(basic_filebuf_wchar_is_open(this))
3137 return NULL;
3139 if(!(f = _Fiopen_wchar(name, mode, prot)))
3140 return NULL;
3142 basic_filebuf_short__Init(this, f, INITFL_open);
3143 basic_filebuf_wchar__Initcvt(this, codecvt_short_use_facet(this->base.loc));
3144 return this;
3147 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PB_WI@Z */
3148 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3149 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBGI@Z */
3150 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBGI@Z */
3151 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_wchar_mode, 12)
3152 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_wchar_mode(basic_filebuf_wchar *this, const wchar_t *name, unsigned int mode)
3154 return basic_filebuf_wchar_open_wchar(this, name, mode, SH_DENYNO);
3157 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PB_WI@Z */
3158 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEB_WI@Z */
3159 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBGI@Z */
3160 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBGI@Z */
3161 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_wchar_mode, 12)
3162 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_wchar_mode(basic_filebuf_wchar *this, const wchar_t *name, unsigned int mode)
3164 return basic_filebuf_short_open_wchar(this, name, mode, SH_DENYNO);
3167 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDHH@Z */
3168 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3169 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open, 16)
3170 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open(basic_filebuf_wchar *this, const char *name, int mode, int prot)
3172 wchar_t nameW[FILENAME_MAX];
3174 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3176 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3177 return NULL;
3178 return basic_filebuf_wchar_open_wchar(this, nameW, mode, prot);
3181 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDHH@Z */
3182 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDHH@Z */
3183 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open, 16)
3184 basic_filebuf_wchar* __thiscall basic_filebuf_short_open(basic_filebuf_wchar *this, const char *name, int mode, int prot)
3186 wchar_t nameW[FILENAME_MAX];
3188 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
3190 if(mbstowcs_s(NULL, nameW, FILENAME_MAX, name, FILENAME_MAX-1) != 0)
3191 return NULL;
3192 return basic_filebuf_short_open_wchar(this, nameW, mode, prot);
3195 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QAEPAV12@PBDI@Z */
3196 /* ?open@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@QEAAPEAV12@PEBDI@Z */
3197 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_open_mode, 12)
3198 basic_filebuf_wchar* __thiscall basic_filebuf_wchar_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
3200 return basic_filebuf_wchar_open(this, name, mode, SH_DENYNO);
3203 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QAEPAV12@PBDI@Z */
3204 /* ?open@?$basic_filebuf@GU?$char_traits@G@std@@@std@@QEAAPEAV12@PEBDI@Z */
3205 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_open_mode, 12)
3206 basic_filebuf_wchar* __thiscall basic_filebuf_short_open_mode(basic_filebuf_wchar *this, const char *name, unsigned int mode)
3208 return basic_filebuf_short_open(this, name, mode, SH_DENYNO);
3211 /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
3212 /* ?overflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
3213 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
3214 /* ?overflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
3215 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_overflow, 8)
3216 unsigned short __thiscall basic_filebuf_wchar_overflow(basic_filebuf_wchar *this, unsigned short c)
3218 char buf[8], *dyn_buf, *to_next;
3219 wchar_t ch = c;
3220 const wchar_t *from_next;
3221 int max_size;
3222 unsigned short ret;
3225 TRACE("(%p %d)\n", this, c);
3227 if(!basic_filebuf_wchar_is_open(this))
3228 return WEOF;
3229 if(c == WEOF)
3230 return !c;
3232 if(!this->cvt)
3233 return fwrite(&ch, sizeof(wchar_t), 1, this->file) ? c : WEOF;
3235 from_next = &ch;
3236 do {
3237 ret = codecvt_wchar_out(this->cvt, &this->state, from_next, &ch+1,
3238 &from_next, buf, buf+sizeof(buf), &to_next);
3240 switch(ret) {
3241 case CODECVT_partial:
3242 if(to_next == buf)
3243 break;
3244 /* fall through */
3245 case CODECVT_ok:
3246 if(!fwrite(buf, to_next-buf, 1, this->file))
3247 return WEOF;
3248 if(ret == CODECVT_partial)
3249 continue;
3250 return c;
3251 case CODECVT_noconv:
3252 return fwrite(&ch, sizeof(wchar_t), 1, this->file) ? c : WEOF;
3253 default:
3254 return WEOF;
3257 break;
3258 } while(1);
3260 max_size = codecvt_base_max_length(&this->cvt->base);
3261 dyn_buf = malloc(max_size);
3262 if(!dyn_buf)
3263 return WEOF;
3265 ret = codecvt_wchar_out(this->cvt, &this->state, from_next, &ch+1,
3266 &from_next, dyn_buf, dyn_buf+max_size, &to_next);
3268 switch(ret) {
3269 case CODECVT_ok:
3270 ret = fwrite(dyn_buf, to_next-dyn_buf, 1, this->file);
3271 free(dyn_buf);
3272 return ret ? c : WEOF;
3273 case CODECVT_partial:
3274 ERR("buffer should be big enough to store all output\n");
3275 /* fall through */
3276 default:
3277 free(dyn_buf);
3278 return WEOF;
3282 /* ?pbackfail@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGG@Z */
3283 /* ?pbackfail@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGG@Z */
3284 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z */
3285 /* ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGG@Z */
3286 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_pbackfail, 8)
3287 unsigned short __thiscall basic_filebuf_wchar_pbackfail(basic_filebuf_wchar *this, unsigned short c)
3289 TRACE("(%p %d)\n", this, c);
3291 if(!basic_filebuf_wchar_is_open(this))
3292 return WEOF;
3294 if(basic_streambuf_wchar_gptr(&this->base)>basic_streambuf_wchar_eback(&this->base)
3295 && (c==WEOF || basic_streambuf_wchar_gptr(&this->base)[-1]==(wchar_t)c)) {
3296 basic_streambuf_wchar__Gndec(&this->base);
3297 return c==WEOF ? !c : c;
3298 }else if(c!=WEOF && !this->cvt) {
3299 return ungetwc(c, this->file);
3300 }else if(c!=WEOF && basic_streambuf_wchar_gptr(&this->base)!=&this->putback) {
3301 this->putback = c;
3302 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback, &this->putback+1);
3303 return c;
3306 return WEOF;
3309 /* ?uflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
3310 /* ?uflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
3311 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
3312 /* ?uflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
3313 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_uflow, 4)
3314 unsigned short __thiscall basic_filebuf_wchar_uflow(basic_filebuf_wchar *this)
3316 wchar_t ch, *to_next;
3317 char buf[128];
3318 const char *buf_next;
3319 int c, i;
3321 TRACE("(%p)\n", this);
3323 if(!basic_filebuf_wchar_is_open(this))
3324 return WEOF;
3326 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
3327 return *basic_streambuf_wchar__Gninc(&this->base);
3329 if(!this->cvt)
3330 return fgetwc(this->file);
3332 buf_next = buf;
3333 for(i=0; i < sizeof(buf)/sizeof(buf[0]); i++) {
3334 if((c = fgetc(this->file)) == EOF)
3335 return WEOF;
3336 buf[i] = c;
3338 switch(codecvt_wchar_in(this->cvt, &this->state, buf_next,
3339 buf+i+1, &buf_next, &ch, &ch+1, &to_next)) {
3340 case CODECVT_partial:
3341 case CODECVT_ok:
3342 if(to_next == &ch)
3343 continue;
3345 for(i--; i>=buf_next-buf; i--)
3346 ungetc(buf[i], this->file);
3347 return ch;
3348 case CODECVT_noconv:
3349 if(i+1 < sizeof(wchar_t))
3350 continue;
3352 memcpy(&ch, buf, sizeof(wchar_t));
3353 return ch;
3354 default:
3355 return WEOF;
3359 FIXME("buffer is too small\n");
3360 return WEOF;
3363 /* ?underflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEGXZ */
3364 /* ?underflow@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAGXZ */
3365 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGXZ */
3366 /* ?underflow@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAGXZ */
3367 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_underflow, 4)
3368 unsigned short __thiscall basic_filebuf_wchar_underflow(basic_filebuf_wchar *this)
3370 unsigned short ret;
3372 TRACE("(%p)\n", this);
3374 if(basic_streambuf_wchar_gptr(&this->base) < basic_streambuf_wchar_egptr(&this->base))
3375 return *basic_streambuf_wchar_gptr(&this->base);
3377 ret = call_basic_streambuf_wchar_uflow(&this->base);
3378 if(ret != WEOF)
3379 ret = call_basic_streambuf_wchar_pbackfail(&this->base, ret);
3380 return ret;
3383 /* ?seekoff@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3384 /* ?seekoff@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3385 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3386 /* ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3387 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekoff, 24)
3388 fpos_int* __thiscall basic_filebuf_wchar_seekoff(basic_filebuf_wchar *this,
3389 fpos_int *ret, streamoff off, int way, int mode)
3391 fpos_t pos;
3393 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
3395 if(basic_streambuf_wchar_gptr(&this->base) == &this->putback) {
3396 if(way == SEEKDIR_cur)
3397 off -= sizeof(wchar_t);
3399 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback+1, &this->putback+1);
3402 if(!basic_filebuf_wchar_is_open(this) || !basic_filebuf_wchar__Endwrite(this)
3403 || fseek(this->file, off, way)) {
3404 ret->off = 0;
3405 ret->pos = -1;
3406 ret->state = 0;
3407 return ret;
3410 fgetpos(this->file, &pos);
3411 ret->off = 0;
3412 ret->pos = pos;
3413 ret->state = this->state;
3414 return ret;
3417 /* ?seekpos@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3418 /* ?seekpos@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3419 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3420 /* ?seekpos@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3421 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_seekpos, 36)
3422 fpos_int* __thiscall basic_filebuf_wchar_seekpos(basic_filebuf_wchar *this,
3423 fpos_int *ret, fpos_int pos, int mode)
3425 fpos_t fpos;
3427 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
3429 if(!basic_filebuf_wchar_is_open(this) || !basic_filebuf_wchar__Endwrite(this)
3430 || fseek(this->file, (LONG)pos.pos, SEEK_SET)
3431 || (pos.off && fseek(this->file, pos.off, SEEK_CUR))) {
3432 ret->off = 0;
3433 ret->pos = -1;
3434 ret->state = 0;
3435 return ret;
3438 if(basic_streambuf_wchar_gptr(&this->base) == &this->putback)
3439 basic_streambuf_wchar_setg(&this->base, &this->putback, &this->putback+1, &this->putback+1);
3441 fgetpos(this->file, &fpos);
3442 ret->off = 0;
3443 ret->pos = fpos;
3444 ret->state = this->state;
3445 return ret;
3448 /* ?setbuf@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PA_WH@Z */
3449 /* ?setbuf@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEA_W_J@Z */
3450 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_setbuf, 16)
3451 basic_streambuf_wchar* __thiscall basic_filebuf_wchar_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
3453 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
3455 if(!basic_filebuf_wchar_is_open(this))
3456 return NULL;
3458 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
3459 return NULL;
3461 basic_filebuf_wchar__Init(this, this->file, INITFL_open);
3462 return &this->base;
3465 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAGH@Z */
3466 /* ?setbuf@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAG_J@Z */
3467 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_setbuf, 16)
3468 basic_streambuf_wchar* __thiscall basic_filebuf_short_setbuf(basic_filebuf_wchar *this, wchar_t *buf, streamsize count)
3470 TRACE("(%p %p %s)\n", this, buf, wine_dbgstr_longlong(count));
3472 if(!basic_filebuf_wchar_is_open(this))
3473 return NULL;
3475 if(setvbuf(this->file, (char*)buf, (buf==NULL && count==0) ? _IONBF : _IOFBF, count*sizeof(wchar_t)))
3476 return NULL;
3478 basic_filebuf_short__Init(this, this->file, INITFL_open);
3479 return &this->base;
3482 /* ?sync@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEHXZ */
3483 /* ?sync@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAHXZ */
3484 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEHXZ */
3485 /* ?sync@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAHXZ */
3486 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_sync, 4)
3487 int __thiscall basic_filebuf_wchar_sync(basic_filebuf_wchar *this)
3489 TRACE("(%p)\n", this);
3491 if(!basic_filebuf_wchar_is_open(this))
3492 return 0;
3494 if(call_basic_streambuf_wchar_overflow(&this->base, WEOF) == WEOF)
3495 return 0;
3496 return fflush(this->file);
3499 /* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MAEXABVlocale@2@@Z */
3500 /* ?imbue@?$basic_filebuf@_WU?$char_traits@_W@std@@@std@@MEAAXAEBVlocale@2@@Z */
3501 DEFINE_THISCALL_WRAPPER(basic_filebuf_wchar_imbue, 8)
3502 void __thiscall basic_filebuf_wchar_imbue(basic_filebuf_wchar *this, const locale *loc)
3504 TRACE("(%p %p)\n", this, loc);
3505 basic_filebuf_wchar__Initcvt(this, codecvt_wchar_use_facet(loc));
3508 /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEXABVlocale@2@@Z */
3509 /* ?imbue@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MEAAXAEBVlocale@2@@Z */
3510 DEFINE_THISCALL_WRAPPER(basic_filebuf_short_imbue, 8)
3511 void __thiscall basic_filebuf_short_imbue(basic_filebuf_wchar *this, const locale *loc)
3513 TRACE("(%p %p)\n", this, loc);
3514 basic_filebuf_wchar__Initcvt(this, codecvt_short_use_facet(loc));
3517 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEHH@Z */
3518 /* ?_Getstate@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAHH@Z */
3519 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Getstate, 8)
3520 int __thiscall basic_stringbuf_char__Getstate(basic_stringbuf_char *this, IOSB_openmode mode)
3522 int state = 0;
3524 if(!(mode & OPENMODE_in))
3525 state |= STRINGBUF_no_read;
3527 if(!(mode & OPENMODE_out))
3528 state |= STRINGBUF_no_write;
3530 if(mode & OPENMODE_ate)
3531 state |= STRINGBUF_at_end;
3533 if(mode & OPENMODE_app)
3534 state |= STRINGBUF_append;
3536 return state;
3539 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXPBDIH@Z */
3540 /* ?_Init@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXPEBD_KH@Z */
3541 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Init, 16)
3542 void __thiscall basic_stringbuf_char__Init(basic_stringbuf_char *this, const char *str, MSVCP_size_t count, int state)
3544 TRACE("(%p, %p, %lu, %d)\n", this, str, count, state);
3546 basic_streambuf_char__Init_empty(&this->base);
3548 this->state = state;
3549 this->seekhigh = NULL;
3551 if(count && str) {
3552 char *buf = MSVCRT_operator_new(count);
3553 if(!buf) {
3554 ERR("Out of memory\n");
3555 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
3558 memcpy(buf, str, count);
3559 this->seekhigh = buf + count;
3561 this->state |= STRINGBUF_allocated;
3563 if(!(state & STRINGBUF_no_read))
3564 basic_streambuf_char_setg(&this->base, buf, buf, buf + count);
3566 if(!(state & STRINGBUF_no_write)) {
3567 basic_streambuf_char_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
3569 if(!basic_streambuf_char_gptr(&this->base))
3570 basic_streambuf_char_setg(&this->base, buf, 0, buf);
3575 /* ??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 */
3576 /* ??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 */
3577 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_str, 12)
3578 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_str(basic_stringbuf_char *this,
3579 const basic_string_char *str, IOSB_openmode mode)
3581 TRACE("(%p %p %d)\n", this, str, mode);
3583 basic_streambuf_char_ctor(&this->base);
3584 this->base.vtable = &MSVCP_basic_stringbuf_char_vtable;
3586 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str),
3587 str->size, basic_stringbuf_char__Getstate(this, mode));
3588 return this;
3591 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
3592 /* ??0?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
3593 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor_mode, 8)
3594 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor_mode(
3595 basic_stringbuf_char *this, IOSB_openmode mode)
3597 TRACE("(%p %d)\n", this, mode);
3599 basic_streambuf_char_ctor(&this->base);
3600 this->base.vtable = &MSVCP_basic_stringbuf_char_vtable;
3602 basic_stringbuf_char__Init(this, NULL, 0, basic_stringbuf_char__Getstate(this, mode));
3603 return this;
3606 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
3607 /* ??_F?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
3608 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_ctor, 4)
3609 basic_stringbuf_char* __thiscall basic_stringbuf_char_ctor(basic_stringbuf_char *this)
3611 return basic_stringbuf_char_ctor_mode(this, OPENMODE_in|OPENMODE_out);
3614 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAEXXZ */
3615 /* ?_Tidy@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IEAAXXZ */
3616 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char__Tidy, 4)
3617 void __thiscall basic_stringbuf_char__Tidy(basic_stringbuf_char *this)
3619 TRACE("(%p)\n", this);
3621 if(this->state & STRINGBUF_allocated) {
3622 MSVCRT_operator_delete(basic_streambuf_char_eback(&this->base));
3623 this->seekhigh = NULL;
3624 this->state &= ~STRINGBUF_allocated;
3627 basic_streambuf_char__Init_empty(&this->base);
3630 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
3631 /* ??1?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
3632 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_dtor, 4)
3633 void __thiscall basic_stringbuf_char_dtor(basic_stringbuf_char *this)
3635 TRACE("(%p)\n", this);
3637 basic_stringbuf_char__Tidy(this);
3638 basic_streambuf_char_dtor(&this->base);
3641 DEFINE_THISCALL_WRAPPER(MSVCP_basic_stringbuf_char_vector_dtor, 8)
3642 basic_stringbuf_char* __thiscall MSVCP_basic_stringbuf_char_vector_dtor(basic_stringbuf_char *this, unsigned int flags)
3644 TRACE("(%p %x)\n", this, flags);
3646 if(flags & 2) {
3647 /* we have an array, with the number of elements stored before the first object */
3648 int i, *ptr = (int *) this - 1;
3650 for (i = *ptr - 1; i >= 0; i--)
3651 basic_stringbuf_char_dtor(this+i);
3653 MSVCRT_operator_delete(ptr);
3654 }else {
3655 basic_stringbuf_char_dtor(this);
3657 if(flags & 1)
3658 MSVCRT_operator_delete(this);
3661 return this;
3664 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
3665 /* ?overflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
3666 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_overflow, 8)
3667 int __thiscall basic_stringbuf_char_overflow(basic_stringbuf_char *this, int meta)
3669 MSVCP_size_t oldsize, size;
3670 char *ptr, *buf;
3672 TRACE("(%p %x)\n", this, meta);
3674 if(meta == EOF)
3675 return !EOF;
3676 if(this->state & STRINGBUF_no_write)
3677 return EOF;
3679 ptr = basic_streambuf_char_pptr(&this->base);
3680 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
3681 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
3682 this->seekhigh, basic_streambuf_char_epptr(&this->base));
3684 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
3685 return (*basic_streambuf_char__Pninc(&this->base) = meta);
3687 oldsize = (ptr ? basic_streambuf_char_epptr(&this->base)-basic_streambuf_char_eback(&this->base): 0);
3688 size = oldsize|0xf;
3689 size += size/2;
3690 buf = MSVCRT_operator_new(size);
3691 if(!buf) {
3692 ERR("Out of memory\n");
3693 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
3696 if(!oldsize) {
3697 this->seekhigh = buf;
3698 basic_streambuf_char_setp(&this->base, buf, buf+size);
3699 if(this->state & STRINGBUF_no_read)
3700 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
3701 else
3702 basic_streambuf_char_setg(&this->base, buf, buf, buf+1);
3704 this->state |= STRINGBUF_allocated;
3705 }else {
3706 ptr = basic_streambuf_char_eback(&this->base);
3707 memcpy(buf, ptr, oldsize);
3709 this->seekhigh = buf+(this->seekhigh-ptr);
3710 basic_streambuf_char_setp_next(&this->base, buf,
3711 buf+(basic_streambuf_char_pptr(&this->base)-ptr), buf+size);
3712 if(this->state & STRINGBUF_no_read)
3713 basic_streambuf_char_setg(&this->base, buf, NULL, buf);
3714 else
3715 basic_streambuf_char_setg(&this->base, buf,
3716 buf+(basic_streambuf_char_gptr(&this->base)-ptr),
3717 basic_streambuf_char_pptr(&this->base)+1);
3719 MSVCRT_operator_delete(ptr);
3722 return (*basic_streambuf_char__Pninc(&this->base) = meta);
3725 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHH@Z */
3726 /* ?pbackfail@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHH@Z */
3727 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_pbackfail, 8)
3728 int __thiscall basic_stringbuf_char_pbackfail(basic_stringbuf_char *this, int c)
3730 char *cur;
3732 TRACE("(%p %x)\n", this, c);
3734 cur = basic_streambuf_char_gptr(&this->base);
3735 if(!cur || cur==basic_streambuf_char_eback(&this->base)
3736 || (c!=EOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
3737 return EOF;
3739 if(c != EOF)
3740 cur[-1] = c;
3741 basic_streambuf_char_gbump(&this->base, -1);
3742 return c==EOF ? !EOF : c;
3745 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAEHXZ */
3746 /* ?underflow@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAAHXZ */
3747 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_underflow, 4)
3748 int __thiscall basic_stringbuf_char_underflow(basic_stringbuf_char *this)
3750 char *ptr, *cur;
3752 TRACE("(%p)\n", this);
3754 cur = basic_streambuf_char_gptr(&this->base);
3755 if(!cur || this->state&STRINGBUF_no_read)
3756 return EOF;
3758 ptr = basic_streambuf_char_pptr(&this->base);
3759 if(this->seekhigh < ptr)
3760 this->seekhigh = ptr;
3762 ptr = basic_streambuf_char_egptr(&this->base);
3763 if(this->seekhigh > ptr)
3764 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base), cur, this->seekhigh);
3766 if(cur < this->seekhigh)
3767 return *cur;
3768 return EOF;
3771 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
3772 /* ?seekoff@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
3773 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekoff, 24)
3774 fpos_int* __thiscall basic_stringbuf_char_seekoff(basic_stringbuf_char *this,
3775 fpos_int *ret, streamoff off, int way, int mode)
3777 char *beg, *cur_r, *cur_w;
3779 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
3781 cur_w = basic_streambuf_char_pptr(&this->base);
3782 if(cur_w > this->seekhigh)
3783 this->seekhigh = cur_w;
3785 ret->off = 0;
3786 ret->state = 0;
3788 beg = basic_streambuf_char_eback(&this->base);
3789 cur_r = basic_streambuf_char_gptr(&this->base);
3790 if((mode & OPENMODE_in) && cur_r) {
3791 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
3792 off += cur_r-beg;
3793 else if(way == SEEKDIR_end)
3794 off += this->seekhigh-beg;
3795 else if(way != SEEKDIR_beg)
3796 off = -1;
3798 if(off<0 || off>this->seekhigh-beg) {
3799 off = -1;
3800 }else {
3801 basic_streambuf_char_gbump(&this->base, beg-cur_r+off);
3802 if((mode & OPENMODE_out) && cur_w) {
3803 basic_streambuf_char_setp_next(&this->base, beg,
3804 basic_streambuf_char_gptr(&this->base),
3805 basic_streambuf_char_epptr(&this->base));
3808 }else if((mode & OPENMODE_out) && cur_w) {
3809 if(way == SEEKDIR_cur)
3810 off += cur_w-beg;
3811 else if(way == SEEKDIR_end)
3812 off += this->seekhigh-beg;
3813 else if(way != SEEKDIR_beg)
3814 off = -1;
3816 if(off<0 || off>this->seekhigh-beg)
3817 off = -1;
3818 else
3819 basic_streambuf_char_pbump(&this->base, beg-cur_w+off);
3820 }else {
3821 off = -1;
3824 ret->pos = off;
3825 return ret;
3828 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
3829 /* ?seekpos@?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
3830 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_seekpos, 36)
3831 fpos_int* __thiscall basic_stringbuf_char_seekpos(basic_stringbuf_char *this,
3832 fpos_int *ret, fpos_int pos, int mode)
3834 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
3836 if(pos.off==0 && pos.pos==-1 && pos.state==0) {
3837 *ret = pos;
3838 return ret;
3841 return basic_stringbuf_char_seekoff(this, ret, pos.off, SEEKDIR_beg, mode);
3844 /* ?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 */
3845 /* ?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 */
3846 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_set, 8)
3847 void __thiscall basic_stringbuf_char_str_set(basic_stringbuf_char *this, const basic_string_char *str)
3849 TRACE("(%p %p)\n", this, str);
3851 basic_stringbuf_char__Tidy(this);
3852 basic_stringbuf_char__Init(this, MSVCP_basic_string_char_c_str(str), str->size, this->state);
3855 /* ?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 */
3856 /* ?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 */
3857 DEFINE_THISCALL_WRAPPER(basic_stringbuf_char_str_get, 8)
3858 basic_string_char* __thiscall basic_stringbuf_char_str_get(const basic_stringbuf_char *this, basic_string_char *ret)
3860 char *ptr;
3862 TRACE("(%p)\n", this);
3864 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_char_pptr(&this->base)) {
3865 char *pptr;
3867 ptr = basic_streambuf_char_pbase(&this->base);
3868 pptr = basic_streambuf_char_pptr(&this->base);
3870 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
3873 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_char_gptr(&this->base)) {
3874 ptr = basic_streambuf_char_eback(&this->base);
3875 return MSVCP_basic_string_char_ctor_cstr_len(ret, ptr, basic_streambuf_char_egptr(&this->base) - ptr);
3878 return MSVCP_basic_string_char_ctor(ret);
3881 /* ?_Getstate@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AAEHH@Z */
3882 /* ?_Getstate@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AEAAHH@Z */
3883 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEHH@Z */
3884 /* ?_Getstate@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAHH@Z */
3885 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Getstate, 8)
3886 int __thiscall basic_stringbuf_wchar__Getstate(basic_stringbuf_wchar *this, IOSB_openmode mode)
3888 int state = 0;
3890 if(!(mode & OPENMODE_in))
3891 state |= STRINGBUF_no_read;
3893 if(!(mode & OPENMODE_out))
3894 state |= STRINGBUF_no_write;
3896 if(mode & OPENMODE_ate)
3897 state |= STRINGBUF_at_end;
3899 if(mode & OPENMODE_app)
3900 state |= STRINGBUF_append;
3902 return state;
3905 /* ?_Init@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXPB_WIH@Z */
3906 /* ?_Init@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAXPEB_W_KH@Z */
3907 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXPBGIH@Z */
3908 /* ?_Init@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXPEBG_KH@Z */
3909 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Init, 16)
3910 void __thiscall basic_stringbuf_wchar__Init(basic_stringbuf_wchar *this, const wchar_t *str, MSVCP_size_t count, int state)
3912 TRACE("(%p, %p, %lu, %d)\n", this, str, count, state);
3914 basic_streambuf_wchar__Init_empty(&this->base);
3916 this->state = state;
3917 this->seekhigh = NULL;
3919 if(count && str) {
3920 wchar_t *buf = MSVCRT_operator_new(count);
3921 if(!buf) {
3922 ERR("Out of memory\n");
3923 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
3926 memcpy(buf, str, count);
3927 this->seekhigh = buf + count;
3929 this->state |= STRINGBUF_allocated;
3931 if(!(state & STRINGBUF_no_read))
3932 basic_streambuf_wchar_setg(&this->base, buf, buf, buf + count);
3934 if(!(state & STRINGBUF_no_write)) {
3935 basic_streambuf_wchar_setp_next(&this->base, buf, (state & STRINGBUF_at_end) ? buf + count : buf, buf + count);
3937 if(!basic_streambuf_wchar_gptr(&this->base))
3938 basic_streambuf_wchar_setg(&this->base, buf, 0, buf);
3943 /* ??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 */
3944 /* ??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 */
3945 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor_str, 12)
3946 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor_str(basic_stringbuf_wchar *this,
3947 const basic_string_wchar *str, IOSB_openmode mode)
3949 TRACE("(%p %p %d)\n", this, str, mode);
3951 basic_streambuf_wchar_ctor(&this->base);
3952 this->base.vtable = &MSVCP_basic_stringbuf_wchar_vtable;
3954 basic_stringbuf_wchar__Init(this, MSVCP_basic_string_wchar_c_str(str),
3955 str->size, basic_stringbuf_wchar__Getstate(this, mode));
3956 return this;
3959 /* ??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 */
3960 /* ??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 */
3961 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_str, 12)
3962 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_str(basic_stringbuf_wchar *this,
3963 const basic_string_wchar *str, IOSB_openmode mode)
3965 basic_stringbuf_wchar_ctor_str(this, str, mode);
3966 this->base.vtable = &MSVCP_basic_stringbuf_short_vtable;
3967 return this;
3970 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
3971 /* ??0?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
3972 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor_mode, 8)
3973 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor_mode(
3974 basic_stringbuf_wchar *this, IOSB_openmode mode)
3976 TRACE("(%p %d)\n", this, mode);
3978 basic_streambuf_wchar_ctor(&this->base);
3979 this->base.vtable = &MSVCP_basic_stringbuf_wchar_vtable;
3981 basic_stringbuf_wchar__Init(this, NULL, 0, basic_stringbuf_wchar__Getstate(this, mode));
3982 return this;
3985 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
3986 /* ??0?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
3987 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor_mode, 8)
3988 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor_mode(
3989 basic_stringbuf_wchar *this, IOSB_openmode mode)
3991 basic_stringbuf_wchar_ctor_mode(this, mode);
3992 this->base.vtable = &MSVCP_basic_stringbuf_short_vtable;
3993 return this;
3996 /* ??_F?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
3997 /* ??_F?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
3998 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_ctor, 4)
3999 basic_stringbuf_wchar* __thiscall basic_stringbuf_wchar_ctor(basic_stringbuf_wchar *this)
4001 return basic_stringbuf_wchar_ctor_mode(this, OPENMODE_in|OPENMODE_out);
4004 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
4005 /* ??_F?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
4006 DEFINE_THISCALL_WRAPPER(basic_stringbuf_short_ctor, 4)
4007 basic_stringbuf_wchar* __thiscall basic_stringbuf_short_ctor(basic_stringbuf_wchar *this)
4009 return basic_stringbuf_short_ctor_mode(this, OPENMODE_in|OPENMODE_out);
4012 /* ?_Tidy@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IAEXXZ */
4013 /* ?_Tidy@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@IEAAXXZ */
4014 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IAEXXZ */
4015 /* ?_Tidy@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@IEAAXXZ */
4016 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar__Tidy, 4)
4017 void __thiscall basic_stringbuf_wchar__Tidy(basic_stringbuf_wchar *this)
4019 TRACE("(%p)\n", this);
4021 if(this->state & STRINGBUF_allocated) {
4022 MSVCRT_operator_delete(basic_streambuf_wchar_eback(&this->base));
4023 this->seekhigh = NULL;
4024 this->state &= ~STRINGBUF_allocated;
4027 basic_streambuf_wchar__Init_empty(&this->base);
4030 /* ??1?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
4031 /* ??1?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
4032 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
4033 /* ??1?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
4034 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_dtor, 4)
4035 void __thiscall basic_stringbuf_wchar_dtor(basic_stringbuf_wchar *this)
4037 TRACE("(%p)\n", this);
4039 basic_stringbuf_wchar__Tidy(this);
4040 basic_streambuf_wchar_dtor(&this->base);
4043 DEFINE_THISCALL_WRAPPER(MSVCP_basic_stringbuf_wchar_vector_dtor, 8)
4044 basic_stringbuf_wchar* __thiscall MSVCP_basic_stringbuf_wchar_vector_dtor(basic_stringbuf_wchar *this, unsigned int flags)
4046 TRACE("(%p %x)\n", this, flags);
4048 if(flags & 2) {
4049 /* we have an array, with the number of elements stored before the first object */
4050 int i, *ptr = (int *) this - 1;
4052 for (i = *ptr - 1; i >= 0; i--)
4053 basic_stringbuf_wchar_dtor(this+i);
4055 MSVCRT_operator_delete(ptr);
4056 }else {
4057 basic_stringbuf_wchar_dtor(this);
4059 if(flags & 1)
4060 MSVCRT_operator_delete(this);
4063 return this;
4066 DEFINE_THISCALL_WRAPPER(MSVCP_basic_stringbuf_short_vector_dtor, 8)
4067 basic_stringbuf_wchar* __thiscall MSVCP_basic_stringbuf_short_vector_dtor(basic_stringbuf_wchar *this, unsigned int flags)
4069 return MSVCP_basic_stringbuf_wchar_vector_dtor(this, flags);
4072 /* ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z */
4073 /* ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z */
4074 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
4075 /* ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
4076 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_overflow, 8)
4077 unsigned short __thiscall basic_stringbuf_wchar_overflow(basic_stringbuf_wchar *this, unsigned short meta)
4079 MSVCP_size_t oldsize, size;
4080 wchar_t *ptr, *buf;
4082 TRACE("(%p %x)\n", this, meta);
4084 if(meta == WEOF)
4085 return !WEOF;
4086 if(this->state & STRINGBUF_no_write)
4087 return WEOF;
4089 ptr = basic_streambuf_wchar_pptr(&this->base);
4090 if((this->state&STRINGBUF_append) && ptr<this->seekhigh)
4091 basic_streambuf_wchar_setp_next(&this->base, basic_streambuf_wchar_pbase(&this->base),
4092 this->seekhigh, basic_streambuf_wchar_epptr(&this->base));
4094 if(ptr && ptr<basic_streambuf_wchar_epptr(&this->base))
4095 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
4097 oldsize = (ptr ? basic_streambuf_wchar_epptr(&this->base)-basic_streambuf_wchar_eback(&this->base): 0);
4098 size = oldsize|0xf;
4099 size += size/2;
4100 buf = MSVCRT_operator_new(size);
4101 if(!buf) {
4102 ERR("Out of memory\n");
4103 throw_exception(EXCEPTION_BAD_ALLOC, NULL);
4106 if(!oldsize) {
4107 this->seekhigh = buf;
4108 basic_streambuf_wchar_setp(&this->base, buf, buf+size);
4109 if(this->state & STRINGBUF_no_read)
4110 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
4111 else
4112 basic_streambuf_wchar_setg(&this->base, buf, buf, buf+1);
4114 this->state |= STRINGBUF_allocated;
4115 }else {
4116 ptr = basic_streambuf_wchar_eback(&this->base);
4117 memcpy(buf, ptr, oldsize);
4119 this->seekhigh = buf+(this->seekhigh-ptr);
4120 basic_streambuf_wchar_setp_next(&this->base, buf,
4121 buf+(basic_streambuf_wchar_pptr(&this->base)-ptr), buf+size);
4122 if(this->state & STRINGBUF_no_read)
4123 basic_streambuf_wchar_setg(&this->base, buf, NULL, buf);
4124 else
4125 basic_streambuf_wchar_setg(&this->base, buf,
4126 buf+(basic_streambuf_wchar_gptr(&this->base)-ptr),
4127 basic_streambuf_wchar_pptr(&this->base)+1);
4129 MSVCRT_operator_delete(ptr);
4132 return (*basic_streambuf_wchar__Pninc(&this->base) = meta);
4135 /* ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z */
4136 /* ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z */
4137 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGG@Z */
4138 /* ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z */
4139 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_pbackfail, 8)
4140 unsigned short __thiscall basic_stringbuf_wchar_pbackfail(basic_stringbuf_wchar *this, unsigned short c)
4142 wchar_t *cur;
4144 TRACE("(%p %x)\n", this, c);
4146 cur = basic_streambuf_wchar_gptr(&this->base);
4147 if(!cur || cur==basic_streambuf_wchar_eback(&this->base)
4148 || (c!=WEOF && c!=cur[-1] && this->state&STRINGBUF_no_write))
4149 return WEOF;
4151 if(c != WEOF)
4152 cur[-1] = c;
4153 basic_streambuf_wchar_gbump(&this->base, -1);
4154 return c==WEOF ? !WEOF : c;
4157 /* ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGXZ */
4158 /* ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGXZ */
4159 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAEGXZ */
4160 /* ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGXZ */
4161 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_underflow, 4)
4162 unsigned short __thiscall basic_stringbuf_wchar_underflow(basic_stringbuf_wchar *this)
4164 wchar_t *ptr, *cur;
4166 TRACE("(%p)\n", this);
4168 cur = basic_streambuf_wchar_gptr(&this->base);
4169 if(!cur || this->state&STRINGBUF_no_read)
4170 return WEOF;
4172 ptr = basic_streambuf_wchar_pptr(&this->base);
4173 if(this->seekhigh < ptr)
4174 this->seekhigh = ptr;
4176 ptr = basic_streambuf_wchar_egptr(&this->base);
4177 if(this->seekhigh > ptr)
4178 basic_streambuf_wchar_setg(&this->base, basic_streambuf_wchar_eback(&this->base), cur, this->seekhigh);
4180 if(cur < this->seekhigh)
4181 return *cur;
4182 return WEOF;
4185 /* ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4186 /* ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4187 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@JHH@Z */
4188 /* ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
4189 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekoff, 24)
4190 fpos_int* __thiscall basic_stringbuf_wchar_seekoff(basic_stringbuf_wchar *this,
4191 fpos_int *ret, streamoff off, int way, int mode)
4193 wchar_t *beg, *cur_r, *cur_w;
4195 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
4197 cur_w = basic_streambuf_wchar_pptr(&this->base);
4198 if(cur_w > this->seekhigh)
4199 this->seekhigh = cur_w;
4201 ret->off = 0;
4202 ret->state = 0;
4204 beg = basic_streambuf_wchar_eback(&this->base);
4205 cur_r = basic_streambuf_wchar_gptr(&this->base);
4206 if((mode & OPENMODE_in) && cur_r) {
4207 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
4208 off += cur_r-beg;
4209 else if(way == SEEKDIR_end)
4210 off += this->seekhigh-beg;
4211 else if(way != SEEKDIR_beg)
4212 off = -1;
4214 if(off<0 || off>this->seekhigh-beg) {
4215 off = -1;
4216 }else {
4217 basic_streambuf_wchar_gbump(&this->base, beg-cur_r+off);
4218 if((mode & OPENMODE_out) && cur_w) {
4219 basic_streambuf_wchar_setp_next(&this->base, beg,
4220 basic_streambuf_wchar_gptr(&this->base),
4221 basic_streambuf_wchar_epptr(&this->base));
4224 }else if((mode & OPENMODE_out) && cur_w) {
4225 if(way == SEEKDIR_cur)
4226 off += cur_w-beg;
4227 else if(way == SEEKDIR_end)
4228 off += this->seekhigh-beg;
4229 else if(way != SEEKDIR_beg)
4230 off = -1;
4232 if(off<0 || off>this->seekhigh-beg)
4233 off = -1;
4234 else
4235 basic_streambuf_wchar_pbump(&this->base, beg-cur_w+off);
4236 }else {
4237 off = -1;
4240 ret->pos = off;
4241 return ret;
4244 /* ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4245 /* ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4246 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
4247 /* ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
4248 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_seekpos, 36)
4249 fpos_int* __thiscall basic_stringbuf_wchar_seekpos(basic_stringbuf_wchar *this,
4250 fpos_int *ret, fpos_int pos, int mode)
4252 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
4254 if(pos.off==0 && pos.pos==-1 && pos.state==0) {
4255 *ret = pos;
4256 return ret;
4259 return basic_stringbuf_wchar_seekoff(this, ret, pos.off, SEEKDIR_beg, mode);
4262 /* ?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 */
4263 /* ?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 */
4264 /* ?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 */
4265 /* ?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 */
4266 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_str_set, 8)
4267 void __thiscall basic_stringbuf_wchar_str_set(basic_stringbuf_wchar *this, const basic_string_wchar *str)
4269 TRACE("(%p %p)\n", this, str);
4271 basic_stringbuf_wchar__Tidy(this);
4272 basic_stringbuf_wchar__Init(this, MSVCP_basic_string_wchar_c_str(str), str->size, this->state);
4275 /* ?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 */
4276 /* ?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 */
4277 /* ?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 */
4278 /* ?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 */
4279 DEFINE_THISCALL_WRAPPER(basic_stringbuf_wchar_str_get, 8)
4280 basic_string_wchar* __thiscall basic_stringbuf_wchar_str_get(const basic_stringbuf_wchar *this, basic_string_wchar *ret)
4282 wchar_t *ptr;
4284 TRACE("(%p)\n", this);
4286 if(!(this->state & STRINGBUF_no_write) && basic_streambuf_wchar_pptr(&this->base)) {
4287 wchar_t *pptr;
4289 ptr = basic_streambuf_wchar_pbase(&this->base);
4290 pptr = basic_streambuf_wchar_pptr(&this->base);
4292 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, (this->seekhigh < pptr ? pptr : this->seekhigh) - ptr);
4295 if(!(this->state & STRINGBUF_no_read) && basic_streambuf_wchar_gptr(&this->base)) {
4296 ptr = basic_streambuf_wchar_eback(&this->base);
4297 return MSVCP_basic_string_wchar_ctor_cstr_len(ret, ptr, basic_streambuf_wchar_egptr(&this->base) - ptr);
4300 return MSVCP_basic_string_wchar_ctor(ret);
4303 /* ??0ios_base@std@@IAE@XZ */
4304 /* ??0ios_base@std@@IEAA@XZ */
4305 DEFINE_THISCALL_WRAPPER(ios_base_ctor, 4)
4306 ios_base* __thiscall ios_base_ctor(ios_base *this)
4308 TRACE("(%p)\n", this);
4309 this->vtable = &MSVCP_ios_base_vtable;
4310 return this;
4313 /* ??0ios_base@std@@QAE@ABV01@@Z */
4314 /* ??0ios_base@std@@QEAA@AEBV01@@Z */
4315 DEFINE_THISCALL_WRAPPER(ios_base_copy_ctor, 8)
4316 ios_base* __thiscall ios_base_copy_ctor(ios_base *this, const ios_base *copy)
4318 TRACE("(%p %p)\n", this, copy);
4319 *this = *copy;
4320 this->vtable = &MSVCP_ios_base_vtable;
4321 return this;
4324 /* ?_Callfns@ios_base@std@@AAEXW4event@12@@Z */
4325 /* ?_Callfns@ios_base@std@@AEAAXW4event@12@@Z */
4326 DEFINE_THISCALL_WRAPPER(ios_base_Callfns, 8)
4327 void __thiscall ios_base_Callfns(ios_base *this, IOS_BASE_event event)
4329 IOS_BASE_fnarray *cur;
4331 TRACE("(%p %x)\n", this, event);
4333 for(cur=this->calls; cur; cur=cur->next)
4334 cur->event_handler(event, this, cur->index);
4337 /* ?_Tidy@ios_base@std@@AAAXXZ */
4338 /* ?_Tidy@ios_base@std@@AEAAXXZ */
4339 void CDECL ios_base_Tidy(ios_base *this)
4341 IOS_BASE_iosarray *arr_cur, *arr_next;
4342 IOS_BASE_fnarray *event_cur, *event_next;
4344 TRACE("(%p)\n", this);
4346 ios_base_Callfns(this, EVENT_erase_event);
4348 for(arr_cur=this->arr; arr_cur; arr_cur=arr_next) {
4349 arr_next = arr_cur->next;
4350 MSVCRT_operator_delete(arr_cur);
4352 this->arr = NULL;
4354 for(event_cur=this->calls; event_cur; event_cur=event_next) {
4355 event_next = event_cur->next;
4356 MSVCRT_operator_delete(event_cur);
4358 this->calls = NULL;
4361 /* ?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z */
4362 /* ?_Ios_base_dtor@ios_base@std@@CAXPEAV12@@Z */
4363 void CDECL ios_base_Ios_base_dtor(ios_base *obj)
4365 TRACE("(%p)\n", obj);
4366 if(obj->loc) {
4367 locale_dtor(obj->loc);
4368 MSVCRT_operator_delete(obj->loc);
4370 ios_base_Tidy(obj);
4373 /* ??1ios_base@std@@UAE@XZ */
4374 /* ??1ios_base@std@@UEAA@XZ */
4375 DEFINE_THISCALL_WRAPPER(ios_base_dtor, 4)
4376 void __thiscall ios_base_dtor(ios_base *this)
4378 ios_base_Ios_base_dtor(this);
4381 DEFINE_THISCALL_WRAPPER(MSVCP_ios_base_vector_dtor, 8)
4382 ios_base* __thiscall MSVCP_ios_base_vector_dtor(ios_base *this, unsigned int flags)
4384 TRACE("(%p %x)\n", this, flags);
4385 if(flags & 2) {
4386 /* we have an array, with the number of elements stored before the first object */
4387 int i, *ptr = (int *)this-1;
4389 for(i=*ptr-1; i>=0; i--)
4390 ios_base_dtor(this+i);
4391 MSVCRT_operator_delete(ptr);
4392 } else {
4393 ios_base_dtor(this);
4394 if(flags & 1)
4395 MSVCRT_operator_delete(this);
4398 return this;
4401 DEFINE_THISCALL_WRAPPER(MSVCP_iosb_vector_dtor, 8)
4402 void* __thiscall MSVCP_iosb_vector_dtor(void *this, unsigned int flags)
4404 TRACE("(%p %x)\n", this, flags);
4405 if(flags & 2) {
4406 int *ptr = (int *)this-1;
4407 MSVCRT_operator_delete(ptr);
4408 } else {
4409 if(flags & 1)
4410 MSVCRT_operator_delete(this);
4413 return this;
4416 /* ?_Findarr@ios_base@std@@AAEAAU_Iosarray@12@H@Z */
4417 /* ?_Findarr@ios_base@std@@AEAAAEAU_Iosarray@12@H@Z */
4418 DEFINE_THISCALL_WRAPPER(ios_base_Findarr, 8)
4419 IOS_BASE_iosarray* __thiscall ios_base_Findarr(ios_base *this, int index)
4421 IOS_BASE_iosarray *p;
4423 TRACE("(%p %d)\n", this, index);
4425 for(p=this->arr; p; p=p->next) {
4426 if(p->index == index)
4427 return p;
4430 for(p=this->arr; p; p=p->next) {
4431 if(!p->long_val && !p->ptr_val) {
4432 p->index = index;
4433 return p;
4437 p = MSVCRT_operator_new(sizeof(IOS_BASE_iosarray));
4438 p->next = this->arr;
4439 p->index = index;
4440 p->long_val = 0;
4441 p->ptr_val = NULL;
4442 this->arr = p;
4443 return p;
4446 /* ?iword@ios_base@std@@QAEAAJH@Z */
4447 /* ?iword@ios_base@std@@QEAAAEAJH@Z */
4448 DEFINE_THISCALL_WRAPPER(ios_base_iword, 8)
4449 LONG* __thiscall ios_base_iword(ios_base *this, int index)
4451 TRACE("(%p %d)\n", this, index);
4452 return &ios_base_Findarr(this, index)->long_val;
4455 /* ?pword@ios_base@std@@QAEAAPAXH@Z */
4456 /* ?pword@ios_base@std@@QEAAAEAPEAXH@Z */
4457 DEFINE_THISCALL_WRAPPER(ios_base_pword, 8)
4458 void** __thiscall ios_base_pword(ios_base *this, int index)
4460 TRACE("(%p %d)\n", this, index);
4461 return &ios_base_Findarr(this, index)->ptr_val;
4464 /* ?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z */
4465 /* ?register_callback@ios_base@std@@QEAAXP6AXW4event@12@AEAV12@H@ZH@Z */
4466 DEFINE_THISCALL_WRAPPER(ios_base_register_callback, 12)
4467 void __thiscall ios_base_register_callback(ios_base *this, IOS_BASE_event_callback callback, int index)
4469 IOS_BASE_fnarray *event;
4471 TRACE("(%p %p %d)\n", this, callback, index);
4473 event = MSVCRT_operator_new(sizeof(IOS_BASE_fnarray));
4474 event->next = this->calls;
4475 event->index = index;
4476 event->event_handler = callback;
4477 this->calls = event;
4480 /* ?clear@ios_base@std@@QAEXH_N@Z */
4481 /* ?clear@ios_base@std@@QEAAXH_N@Z */
4482 DEFINE_THISCALL_WRAPPER(ios_base_clear_reraise, 12)
4483 void __thiscall ios_base_clear_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise)
4485 TRACE("(%p %x %x)\n", this, state, reraise);
4487 this->state = state & IOSTATE_mask;
4488 if(!(this->state & this->except))
4489 return;
4491 if(reraise)
4492 throw_exception(EXCEPTION_RERAISE, NULL);
4493 else if(this->state & this->except & IOSTATE_eofbit)
4494 throw_exception(EXCEPTION_FAILURE, "eofbit is set");
4495 else if(this->state & this->except & IOSTATE_failbit)
4496 throw_exception(EXCEPTION_FAILURE, "failbit is set");
4497 else if(this->state & this->except & IOSTATE_badbit)
4498 throw_exception(EXCEPTION_FAILURE, "badbit is set");
4499 else if(this->state & this->except & IOSTATE__Hardfail)
4500 throw_exception(EXCEPTION_FAILURE, "_Hardfail is set");
4503 /* ?clear@ios_base@std@@QAEXH@Z */
4504 /* ?clear@ios_base@std@@QEAAXH@Z */
4505 DEFINE_THISCALL_WRAPPER(ios_base_clear, 8)
4506 void __thiscall ios_base_clear(ios_base *this, IOSB_iostate state)
4508 ios_base_clear_reraise(this, state, FALSE);
4511 /* ?clear@ios_base@std@@QAEXI@Z */
4512 /* ?clear@ios_base@std@@QEAAXI@Z */
4513 DEFINE_THISCALL_WRAPPER(ios_base_clear_unsigned, 8)
4514 void __thiscall ios_base_clear_unsigned(ios_base *this, unsigned int state)
4516 ios_base_clear_reraise(this, (IOSB_iostate)state, FALSE);
4519 /* ?exceptions@ios_base@std@@QAEXH@Z */
4520 /* ?exceptions@ios_base@std@@QEAAXH@Z */
4521 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set, 8)
4522 void __thiscall ios_base_exceptions_set(ios_base *this, IOSB_iostate state)
4524 TRACE("(%p %x)\n", this, state);
4525 this->except = state & IOSTATE_mask;
4526 ios_base_clear(this, this->state);
4529 /* ?exceptions@ios_base@std@@QAEXI@Z */
4530 /* ?exceptions@ios_base@std@@QEAAXI@Z */
4531 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_set_unsigned, 8)
4532 void __thiscall ios_base_exceptions_set_unsigned(ios_base *this, unsigned int state)
4534 TRACE("(%p %x)\n", this, state);
4535 ios_base_exceptions_set(this, state);
4538 /* ?exceptions@ios_base@std@@QBEHXZ */
4539 /* ?exceptions@ios_base@std@@QEBAHXZ */
4540 DEFINE_THISCALL_WRAPPER(ios_base_exceptions_get, 4)
4541 IOSB_iostate __thiscall ios_base_exceptions_get(ios_base *this)
4543 TRACE("(%p)\n", this);
4544 return this->except;
4547 /* ?copyfmt@ios_base@std@@QAEAAV12@ABV12@@Z */
4548 /* ?copyfmt@ios_base@std@@QEAAAEAV12@AEBV12@@Z */
4549 DEFINE_THISCALL_WRAPPER(ios_base_copyfmt, 8)
4550 ios_base* __thiscall ios_base_copyfmt(ios_base *this, const ios_base *rhs)
4552 TRACE("(%p %p)\n", this, rhs);
4554 if(this != rhs) {
4555 IOS_BASE_iosarray *arr_cur;
4556 IOS_BASE_fnarray *event_cur;
4558 ios_base_Tidy(this);
4560 for(arr_cur=rhs->arr; arr_cur; arr_cur=arr_cur->next) {
4561 if(arr_cur->long_val)
4562 *ios_base_iword(this, arr_cur->index) = arr_cur->long_val;
4563 if(arr_cur->ptr_val)
4564 *ios_base_pword(this, arr_cur->index) = arr_cur->ptr_val;
4566 this->stdstr = rhs->stdstr;
4567 this->fmtfl = rhs->fmtfl;
4568 this->prec = rhs->prec;
4569 this->wide = rhs->wide;
4570 locale_operator_assign(this->loc, rhs->loc);
4572 for(event_cur=rhs->calls; event_cur; event_cur=event_cur->next)
4573 ios_base_register_callback(this, event_cur->event_handler, event_cur->index);
4575 ios_base_Callfns(this, EVENT_copyfmt_event);
4576 ios_base_exceptions_set(this, rhs->except);
4579 return this;
4582 /* ??4ios_base@std@@QAEAAV01@ABV01@@Z */
4583 /* ??4ios_base@std@@QEAAAEAV01@AEBV01@@Z */
4584 DEFINE_THISCALL_WRAPPER(ios_base_assign, 8)
4585 ios_base* __thiscall ios_base_assign(ios_base *this, const ios_base *right)
4587 TRACE("(%p %p)\n", this, right);
4589 if(this != right) {
4590 this->state = right->state;
4591 ios_base_copyfmt(this, right);
4594 return this;
4597 /* ?fail@ios_base@std@@QBE_NXZ */
4598 /* ?fail@ios_base@std@@QEBA_NXZ */
4599 DEFINE_THISCALL_WRAPPER(ios_base_fail, 4)
4600 MSVCP_bool __thiscall ios_base_fail(const ios_base *this)
4602 TRACE("(%p)\n", this);
4603 return (this->state & (IOSTATE_failbit|IOSTATE_badbit)) != 0;
4606 /* ??7ios_base@std@@QBE_NXZ */
4607 /* ??7ios_base@std@@QEBA_NXZ */
4608 DEFINE_THISCALL_WRAPPER(ios_base_op_succ, 4)
4609 MSVCP_bool __thiscall ios_base_op_succ(const ios_base *this)
4611 TRACE("(%p)\n", this);
4612 return ios_base_fail(this);
4615 /* ??Bios_base@std@@QBEPAXXZ */
4616 /* ??Bios_base@std@@QEBAPEAXXZ */
4617 DEFINE_THISCALL_WRAPPER(ios_base_op_fail, 4)
4618 void* __thiscall ios_base_op_fail(const ios_base *this)
4620 TRACE("(%p)\n", this);
4621 return ios_base_fail(this) ? NULL : (void*)this;
4624 /* ?_Addstd@ios_base@std@@SAXPAV12@@Z */
4625 /* ?_Addstd@ios_base@std@@SAXPEAV12@@Z */
4626 void CDECL ios_base_Addstd(ios_base *add)
4628 FIXME("(%p) stub\n", add);
4631 /* ?_Index_func@ios_base@std@@CAAAHXZ */
4632 /* ?_Index_func@ios_base@std@@CAAEAHXZ */
4633 int* CDECL ios_base_Index_func(void)
4635 TRACE("\n");
4636 return &ios_base_Index;
4639 /* ?_Init@ios_base@std@@IAEXXZ */
4640 /* ?_Init@ios_base@std@@IEAAXXZ */
4641 DEFINE_THISCALL_WRAPPER(ios_base_Init, 4)
4642 void __thiscall ios_base_Init(ios_base *this)
4644 TRACE("(%p)\n", this);
4646 this->stdstr = 0;
4647 this->state = this->except = IOSTATE_goodbit;
4648 this->fmtfl = FMTFLAG_skipws | FMTFLAG_dec;
4649 this->prec = 6;
4650 this->wide = 0;
4651 this->arr = NULL;
4652 this->calls = NULL;
4653 this->loc = MSVCRT_operator_new(sizeof(locale));
4654 locale_ctor(this->loc);
4657 /* ?_Sync_func@ios_base@std@@CAAA_NXZ */
4658 /* ?_Sync_func@ios_base@std@@CAAEA_NXZ */
4659 MSVCP_bool* CDECL ios_base_Sync_func(void)
4661 TRACE("\n");
4662 return &ios_base_Sync;
4665 /* ?bad@ios_base@std@@QBE_NXZ */
4666 /* ?bad@ios_base@std@@QEBA_NXZ */
4667 DEFINE_THISCALL_WRAPPER(ios_base_bad, 4)
4668 MSVCP_bool __thiscall ios_base_bad(const ios_base *this)
4670 TRACE("(%p)\n", this);
4671 return (this->state & IOSTATE_badbit) != 0;
4674 /* ?eof@ios_base@std@@QBE_NXZ */
4675 /* ?eof@ios_base@std@@QEBA_NXZ */
4676 DEFINE_THISCALL_WRAPPER(ios_base_eof, 4)
4677 MSVCP_bool __thiscall ios_base_eof(const ios_base *this)
4679 TRACE("(%p)\n", this);
4680 return (this->state & IOSTATE_eofbit) != 0;
4683 /* ?flags@ios_base@std@@QAEHH@Z */
4684 /* ?flags@ios_base@std@@QEAAHH@Z */
4685 DEFINE_THISCALL_WRAPPER(ios_base_flags_set, 8)
4686 IOSB_fmtflags __thiscall ios_base_flags_set(ios_base *this, IOSB_fmtflags flags)
4688 IOSB_fmtflags ret = this->fmtfl;
4690 TRACE("(%p %x)\n", this, flags);
4692 this->fmtfl = flags & FMTFLAG_mask;
4693 return ret;
4696 /* ?flags@ios_base@std@@QBEHXZ */
4697 /* ?flags@ios_base@std@@QEBAHXZ */
4698 DEFINE_THISCALL_WRAPPER(ios_base_flags_get, 4)
4699 IOSB_fmtflags __thiscall ios_base_flags_get(const ios_base *this)
4701 TRACE("(%p)\n", this);
4702 return this->fmtfl;
4705 /* ?getloc@ios_base@std@@QBE?AVlocale@2@XZ */
4706 /* ?getloc@ios_base@std@@QEBA?AVlocale@2@XZ */
4707 DEFINE_THISCALL_WRAPPER(ios_base_getloc, 8)
4708 locale* __thiscall ios_base_getloc(const ios_base *this, locale *ret)
4710 TRACE("(%p)\n", this);
4711 return locale_copy_ctor(ret, this->loc);
4714 /* ?good@ios_base@std@@QBE_NXZ */
4715 /* ?good@ios_base@std@@QEBA_NXZ */
4716 DEFINE_THISCALL_WRAPPER(ios_base_good, 4)
4717 MSVCP_bool __thiscall ios_base_good(const ios_base *this)
4719 TRACE("(%p)\n", this);
4720 return this->state == IOSTATE_goodbit;
4723 /* ?imbue@ios_base@std@@QAE?AVlocale@2@ABV32@@Z */
4724 /* ?imbue@ios_base@std@@QEAA?AVlocale@2@AEBV32@@Z */
4725 DEFINE_THISCALL_WRAPPER(ios_base_imbue, 12)
4726 locale* __thiscall ios_base_imbue(ios_base *this, locale *ret, const locale *loc)
4728 TRACE("(%p %p)\n", this, loc);
4729 *ret = *this->loc;
4730 locale_copy_ctor(this->loc, loc);
4731 return ret;
4734 /* ?precision@ios_base@std@@QAEHH@Z */
4735 /* ?precision@ios_base@std@@QEAA_J_J@Z */
4736 DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 12)
4737 streamsize __thiscall ios_base_precision_set(ios_base *this, streamsize precision)
4739 streamsize ret = this->prec;
4741 TRACE("(%p %s)\n", this, wine_dbgstr_longlong(precision));
4743 this->prec = precision;
4744 return ret;
4747 /* ?precision@ios_base@std@@QBEHXZ */
4748 /* ?precision@ios_base@std@@QEBA_JXZ */
4749 DEFINE_THISCALL_WRAPPER(ios_base_precision_get, 4)
4750 streamsize __thiscall ios_base_precision_get(const ios_base *this)
4752 TRACE("(%p)\n", this);
4753 return this->prec;
4756 /* ?rdstate@ios_base@std@@QBEHXZ */
4757 /* ?rdstate@ios_base@std@@QEBAHXZ */
4758 DEFINE_THISCALL_WRAPPER(ios_base_rdstate, 4)
4759 IOSB_iostate __thiscall ios_base_rdstate(const ios_base *this)
4761 TRACE("(%p)\n", this);
4762 return this->state;
4765 /* ?setf@ios_base@std@@QAEHHH@Z */
4766 /* ?setf@ios_base@std@@QEAAHHH@Z */
4767 DEFINE_THISCALL_WRAPPER(ios_base_setf_mask, 12)
4768 IOSB_fmtflags __thiscall ios_base_setf_mask(ios_base *this, IOSB_fmtflags flags, IOSB_fmtflags mask)
4770 IOSB_fmtflags ret = this->fmtfl;
4772 TRACE("(%p %x %x)\n", this, flags, mask);
4774 this->fmtfl = (this->fmtfl & (~mask)) | (flags & mask & FMTFLAG_mask);
4775 return ret;
4778 /* ?setf@ios_base@std@@QAEHH@Z */
4779 /* ?setf@ios_base@std@@QEAAHH@Z */
4780 DEFINE_THISCALL_WRAPPER(ios_base_setf, 8)
4781 IOSB_fmtflags __thiscall ios_base_setf(ios_base *this, IOSB_fmtflags flags)
4783 return ios_base_setf_mask(this, flags, ~0);
4786 /* ?setstate@ios_base@std@@QAEXH_N@Z */
4787 /* ?setstate@ios_base@std@@QEAAXH_N@Z */
4788 DEFINE_THISCALL_WRAPPER(ios_base_setstate_reraise, 12)
4789 void __thiscall ios_base_setstate_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise)
4791 TRACE("(%p %x %x)\n", this, state, reraise);
4793 if(state != IOSTATE_goodbit)
4794 ios_base_clear_reraise(this, this->state | state, reraise);
4797 /* ?setstate@ios_base@std@@QAEXH@Z */
4798 /* ?setstate@ios_base@std@@QEAAXH@Z */
4799 DEFINE_THISCALL_WRAPPER(ios_base_setstate, 8)
4800 void __thiscall ios_base_setstate(ios_base *this, IOSB_iostate state)
4802 ios_base_setstate_reraise(this, state, FALSE);
4805 /* ?setstate@ios_base@std@@QAEXI@Z */
4806 /* ?setstate@ios_base@std@@QEAAXI@Z */
4807 DEFINE_THISCALL_WRAPPER(ios_base_setstate_unsigned, 8)
4808 void __thiscall ios_base_setstate_unsigned(ios_base *this, unsigned int state)
4810 ios_base_setstate_reraise(this, (IOSB_iostate)state, FALSE);
4813 /* ?sync_with_stdio@ios_base@std@@SA_N_N@Z */
4814 MSVCP_bool CDECL ios_base_sync_with_stdio(MSVCP_bool sync)
4816 _Lockit lock;
4817 MSVCP_bool ret;
4819 TRACE("(%x)\n", sync);
4821 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
4822 ret = ios_base_Sync;
4823 ios_base_Sync = sync;
4824 _Lockit_dtor(&lock);
4825 return ret;
4828 /* ?unsetf@ios_base@std@@QAEXH@Z */
4829 /* ?unsetf@ios_base@std@@QEAAXH@Z */
4830 DEFINE_THISCALL_WRAPPER(ios_base_unsetf, 8)
4831 void __thiscall ios_base_unsetf(ios_base *this, IOSB_fmtflags flags)
4833 TRACE("(%p %x)\n", this, flags);
4834 this->fmtfl &= ~flags;
4837 /* ?width@ios_base@std@@QAEHH@Z */
4838 /* ?width@ios_base@std@@QEAA_J_J@Z */
4839 DEFINE_THISCALL_WRAPPER(ios_base_width_set, 12)
4840 streamsize __thiscall ios_base_width_set(ios_base *this, streamsize width)
4842 streamsize ret = this->wide;
4844 TRACE("(%p %s)\n", this, wine_dbgstr_longlong(width));
4846 this->wide = width;
4847 return ret;
4850 /* ?width@ios_base@std@@QBEHXZ */
4851 /* ?width@ios_base@std@@QEBA_JXZ */
4852 DEFINE_THISCALL_WRAPPER(ios_base_width_get, 4)
4853 streamsize __thiscall ios_base_width_get(ios_base *this)
4855 TRACE("(%p)\n", this);
4856 return this->wide;
4859 /* ?xalloc@ios_base@std@@SAHXZ */
4860 int CDECL ios_base_xalloc(void)
4862 _Lockit lock;
4863 int ret;
4865 TRACE("\n");
4867 _Lockit_ctor_locktype(&lock, _LOCK_STREAM);
4868 ret = ios_base_Index++;
4869 _Lockit_dtor(&lock);
4870 return ret;
4873 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ */
4874 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ */
4875 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor, 4)
4876 basic_ios_char* __thiscall basic_ios_char_ctor(basic_ios_char *this)
4878 TRACE("(%p)\n", this);
4880 ios_base_ctor(&this->base);
4881 this->base.vtable = &MSVCP_basic_ios_char_vtable;
4882 return this;
4885 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IAEXPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
4886 /* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */
4887 DEFINE_THISCALL_WRAPPER(basic_ios_char_init, 12)
4888 void __thiscall basic_ios_char_init(basic_ios_char *this, basic_streambuf_char *streambuf, MSVCP_bool isstd)
4890 TRACE("(%p %p %x)\n", this, streambuf, isstd);
4891 ios_base_Init(&this->base);
4892 this->strbuf = streambuf;
4893 this->stream = NULL;
4894 this->fillch = ' ';
4896 if(!streambuf)
4897 ios_base_setstate(&this->base, IOSTATE_badbit);
4899 if(isstd)
4900 FIXME("standard streams not handled yet\n");
4903 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
4904 /* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
4905 DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor_streambuf, 8)
4906 basic_ios_char* __thiscall basic_ios_char_ctor_streambuf(basic_ios_char *this, basic_streambuf_char *strbuf)
4908 TRACE("(%p %p)\n", this, strbuf);
4910 basic_ios_char_ctor(this);
4911 basic_ios_char_init(this, strbuf, FALSE);
4912 return this;
4915 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ */
4916 /* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ */
4917 DEFINE_THISCALL_WRAPPER(basic_ios_char_dtor, 4)
4918 void __thiscall basic_ios_char_dtor(basic_ios_char *this)
4920 TRACE("(%p)\n", this);
4921 ios_base_dtor(&this->base);
4924 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ios_char_vector_dtor, 8)
4925 basic_ios_char* __thiscall MSVCP_basic_ios_char_vector_dtor(basic_ios_char *this, unsigned int flags)
4927 TRACE("(%p %x)\n", this, flags);
4928 if(flags & 2) {
4929 /* we have an array, with the number of elements stored before the first object */
4930 int i, *ptr = (int *)this-1;
4932 for(i=*ptr-1; i>=0; i--)
4933 basic_ios_char_dtor(this+i);
4934 MSVCRT_operator_delete(ptr);
4935 } else {
4936 basic_ios_char_dtor(this);
4937 if(flags & 1)
4938 MSVCRT_operator_delete(this);
4941 return this;
4944 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
4945 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
4946 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear_reraise, 12)
4947 void __thiscall basic_ios_char_clear_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise)
4949 TRACE("(%p %x %x)\n", this, state, reraise);
4950 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
4953 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
4954 /* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
4955 DEFINE_THISCALL_WRAPPER(basic_ios_char_clear, 8)
4956 void __thiscall basic_ios_char_clear(basic_ios_char *this, unsigned int state)
4958 basic_ios_char_clear_reraise(this, (IOSB_iostate)state, FALSE);
4961 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEAAV12@ABV12@@Z */
4962 /* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEBV12@@Z */
4963 DEFINE_THISCALL_WRAPPER(basic_ios_char_copyfmt, 8)
4964 basic_ios_char* __thiscall basic_ios_char_copyfmt(basic_ios_char *this, basic_ios_char *copy)
4966 TRACE("(%p %p)\n", this, copy);
4967 if(this == copy)
4968 return this;
4970 this->stream = copy->stream;
4971 this->fillch = copy->fillch;
4972 ios_base_copyfmt(&this->base, &copy->base);
4973 return this;
4976 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEDD@Z */
4977 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAADD@Z */
4978 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_set, 8)
4979 char __thiscall basic_ios_char_fill_set(basic_ios_char *this, char fill)
4981 char ret = this->fillch;
4983 TRACE("(%p %c)\n", this, fill);
4985 this->fillch = fill;
4986 return ret;
4989 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ */
4990 /* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ */
4991 DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_get, 4)
4992 char __thiscall basic_ios_char_fill_get(basic_ios_char *this)
4994 TRACE("(%p)\n", this);
4995 return this->fillch;
4998 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
4999 /* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
5000 DEFINE_THISCALL_WRAPPER(basic_ios_char_imbue, 12)
5001 locale *__thiscall basic_ios_char_imbue(basic_ios_char *this, locale *ret, const locale *loc)
5003 TRACE("(%p %p %p)\n", this, ret, loc);
5005 if(this->strbuf) {
5006 basic_streambuf_char_pubimbue(this->strbuf, ret, loc);
5007 locale_dtor(ret);
5010 return ios_base_imbue(&this->base, ret, loc);
5013 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDDD@Z */
5014 /* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADDD@Z */
5015 DEFINE_THISCALL_WRAPPER(basic_ios_char_narrow, 12)
5016 char __thiscall basic_ios_char_narrow(basic_ios_char *this, char ch, char def)
5018 TRACE("(%p %c %c)\n", this, ch, def);
5019 return ctype_char_narrow_ch(ctype_char_use_facet(this->strbuf->loc), ch, def);
5022 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PAV32@@Z */
5023 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAV32@@Z */
5024 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_set, 8)
5025 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_set(basic_ios_char *this, basic_streambuf_char *streambuf)
5027 basic_streambuf_char *ret = this->strbuf;
5029 TRACE("(%p %p)\n", this, streambuf);
5031 this->strbuf = streambuf;
5032 basic_ios_char_clear(this, IOSTATE_goodbit);
5033 return ret;
5036 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
5037 /* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */
5038 DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_get, 4)
5039 basic_streambuf_char* __thiscall basic_ios_char_rdbuf_get(const basic_ios_char *this)
5041 TRACE("(%p)\n", this);
5042 return this->strbuf;
5045 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */
5046 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */
5047 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate_reraise, 12)
5048 void __thiscall basic_ios_char_setstate_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise)
5050 TRACE("(%p %x %x)\n", this, state, reraise);
5052 if(state != IOSTATE_goodbit)
5053 basic_ios_char_clear_reraise(this, this->base.state | state, reraise);
5056 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */
5057 /* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */
5058 DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate, 8)
5059 void __thiscall basic_ios_char_setstate(basic_ios_char *this, unsigned int state)
5061 basic_ios_char_setstate_reraise(this, (IOSB_iostate)state, FALSE);
5064 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@PAV32@@Z */
5065 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@PEAV32@@Z */
5066 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_set, 8)
5067 basic_ostream_char* __thiscall basic_ios_char_tie_set(basic_ios_char *this, basic_ostream_char *ostream)
5069 basic_ostream_char *ret = this->stream;
5071 TRACE("(%p %p)\n", this, ostream);
5073 this->stream = ostream;
5074 return ret;
5077 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
5078 /* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */
5079 DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_get, 4)
5080 basic_ostream_char* __thiscall basic_ios_char_tie_get(const basic_ios_char *this)
5082 TRACE("(%p)\n", this);
5083 return this->stream;
5086 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z */
5087 /* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z */
5088 DEFINE_THISCALL_WRAPPER(basic_ios_char_widen, 8)
5089 char __thiscall basic_ios_char_widen(basic_ios_char *this, char ch)
5091 TRACE("(%p %c)\n", this, ch);
5092 return ctype_char_widen_ch(ctype_char_use_facet(this->strbuf->loc), ch);
5096 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAE@XZ */
5097 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */
5098 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor, 4)
5099 basic_ios_wchar* __thiscall basic_ios_wchar_ctor(basic_ios_wchar *this)
5101 TRACE("(%p)\n", this);
5103 ios_base_ctor(&this->base);
5104 this->base.vtable = &MSVCP_basic_ios_wchar_vtable;
5105 return this;
5108 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IAE@XZ */
5109 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@IEAA@XZ */
5110 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor, 4)
5111 basic_ios_wchar* __thiscall basic_ios_short_ctor(basic_ios_wchar *this)
5113 basic_ios_wchar_ctor(this);
5114 this->base.vtable = &MSVCP_basic_ios_short_vtable;
5115 return this;
5118 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
5119 /* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */
5120 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IAEXPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
5121 /* ?init@?$basic_ios@GU?$char_traits@G@std@@@std@@IEAAXPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@_N@Z */
5122 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_init, 12)
5123 void __thiscall basic_ios_wchar_init(basic_ios_wchar *this, basic_streambuf_wchar *streambuf, MSVCP_bool isstd)
5125 TRACE("(%p %p %x)\n", this, streambuf, isstd);
5126 ios_base_Init(&this->base);
5127 this->strbuf = streambuf;
5128 this->stream = NULL;
5129 this->fillch = ' ';
5131 if(!streambuf)
5132 ios_base_setstate(&this->base, IOSTATE_badbit);
5134 if(isstd)
5135 FIXME("standard streams not handled yet\n");
5138 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
5139 /* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
5140 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor_streambuf, 8)
5141 basic_ios_wchar* __thiscall basic_ios_wchar_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
5143 TRACE("(%p %p)\n", this, strbuf);
5145 basic_ios_wchar_ctor(this);
5146 basic_ios_wchar_init(this, strbuf, FALSE);
5147 return this;
5150 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
5151 /* ??0?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
5152 DEFINE_THISCALL_WRAPPER(basic_ios_short_ctor_streambuf, 8)
5153 basic_ios_wchar* __thiscall basic_ios_short_ctor_streambuf(basic_ios_wchar *this, basic_streambuf_wchar *strbuf)
5155 basic_ios_wchar_ctor_streambuf(this, strbuf);
5156 this->base.vtable = &MSVCP_basic_ios_short_vtable;
5157 return this;
5160 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
5161 /* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
5162 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UAE@XZ */
5163 /* ??1?$basic_ios@GU?$char_traits@G@std@@@std@@UEAA@XZ */
5164 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_dtor, 4)
5165 void __thiscall basic_ios_wchar_dtor(basic_ios_wchar *this)
5167 TRACE("(%p)\n", this);
5168 ios_base_dtor(&this->base);
5171 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ios_wchar_vector_dtor, 8)
5172 basic_ios_wchar* __thiscall MSVCP_basic_ios_wchar_vector_dtor(basic_ios_wchar *this, unsigned int flags)
5174 TRACE("(%p %x)\n", this, flags);
5175 if(flags & 2) {
5176 /* we have an array, with the number of elements stored before the first object */
5177 int i, *ptr = (int *)this-1;
5179 for(i=*ptr-1; i>=0; i--)
5180 basic_ios_wchar_dtor(this+i);
5181 MSVCRT_operator_delete(ptr);
5182 } else {
5183 basic_ios_wchar_dtor(this);
5184 if(flags & 1)
5185 MSVCRT_operator_delete(this);
5188 return this;
5191 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ios_short_vector_dtor, 8)
5192 basic_ios_wchar* __thiscall MSVCP_basic_ios_short_vector_dtor(basic_ios_wchar *this, unsigned int flags)
5194 return MSVCP_basic_ios_wchar_vector_dtor(this, flags);
5197 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
5198 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
5199 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
5200 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
5201 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear_reraise, 12)
5202 void __thiscall basic_ios_wchar_clear_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise)
5204 TRACE("(%p %x %x)\n", this, state, reraise);
5205 ios_base_clear_reraise(&this->base, state | (this->strbuf ? IOSTATE_goodbit : IOSTATE_badbit), reraise);
5208 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
5209 /* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
5210 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
5211 /* ?clear@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
5212 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear, 8)
5213 void __thiscall basic_ios_wchar_clear(basic_ios_wchar *this, unsigned int state)
5215 basic_ios_wchar_clear_reraise(this, (IOSB_iostate)state, FALSE);
5218 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEAAV12@ABV12@@Z */
5219 /* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEBV12@@Z */
5220 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEAAV12@ABV12@@Z */
5221 /* ?copyfmt@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEBV12@@Z */
5222 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_copyfmt, 8)
5223 basic_ios_wchar* __thiscall basic_ios_wchar_copyfmt(basic_ios_wchar *this, basic_ios_wchar *copy)
5225 TRACE("(%p %p)\n", this, copy);
5226 if(this == copy)
5227 return this;
5229 this->stream = copy->stream;
5230 this->fillch = copy->fillch;
5231 ios_base_copyfmt(&this->base, &copy->base);
5232 return this;
5235 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE_W_W@Z */
5236 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA_W_W@Z */
5237 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEGG@Z */
5238 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAGG@Z */
5239 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_set, 8)
5240 wchar_t __thiscall basic_ios_wchar_fill_set(basic_ios_wchar *this, wchar_t fill)
5242 wchar_t ret = this->fillch;
5244 TRACE("(%p %c)\n", this, fill);
5246 this->fillch = fill;
5247 return ret;
5250 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WXZ */
5251 /* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WXZ */
5252 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGXZ */
5253 /* ?fill@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGXZ */
5254 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_get, 4)
5255 wchar_t __thiscall basic_ios_wchar_fill_get(basic_ios_wchar *this)
5257 TRACE("(%p)\n", this);
5258 return this->fillch;
5261 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
5262 /* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
5263 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QAE?AVlocale@2@ABV32@@Z */
5264 /* ?imbue@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */
5265 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_imbue, 12)
5266 locale *__thiscall basic_ios_wchar_imbue(basic_ios_wchar *this, locale *ret, const locale *loc)
5268 TRACE("(%p %p %p)\n", this, ret, loc);
5270 if(this->strbuf)
5271 return basic_streambuf_wchar_pubimbue(this->strbuf, ret, loc);
5273 locale_copy_ctor(ret, loc);
5274 return ret;
5277 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBED_WD@Z */
5278 /* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAD_WD@Z */
5279 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEDGD@Z */
5280 /* ?narrow@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBADGD@Z */
5281 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_narrow, 12)
5282 char __thiscall basic_ios_wchar_narrow(basic_ios_wchar *this, wchar_t ch, char def)
5284 TRACE("(%p %c %c)\n", this, ch, def);
5285 return ctype_wchar_narrow_ch(ctype_wchar_use_facet(this->strbuf->loc), ch, def);
5288 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
5289 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
5290 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PAV32@@Z */
5291 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@PEAV32@@Z */
5292 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_set, 8)
5293 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_set(basic_ios_wchar *this, basic_streambuf_wchar *streambuf)
5295 basic_streambuf_wchar *ret = this->strbuf;
5297 TRACE("(%p %p)\n", this, streambuf);
5299 this->strbuf = streambuf;
5300 basic_ios_wchar_clear(this, IOSTATE_goodbit);
5301 return ret;
5304 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
5305 /* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */
5306 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
5307 /* ?rdbuf@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@XZ */
5308 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_get, 4)
5309 basic_streambuf_wchar* __thiscall basic_ios_wchar_rdbuf_get(const basic_ios_wchar *this)
5311 TRACE("(%p)\n", this);
5312 return this->strbuf;
5315 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */
5316 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */
5317 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXH_N@Z */
5318 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXH_N@Z */
5319 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate_reraise, 12)
5320 void __thiscall basic_ios_wchar_setstate_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise)
5322 TRACE("(%p %x %x)\n", this, state, reraise);
5324 if(state != IOSTATE_goodbit)
5325 basic_ios_wchar_clear_reraise(this, this->base.state | state, reraise);
5328 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */
5329 /* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */
5330 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEXI@Z */
5331 /* ?setstate@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAXI@Z */
5332 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate, 8)
5333 void __thiscall basic_ios_wchar_setstate(basic_ios_wchar *this, IOSB_iostate state)
5335 basic_ios_wchar_setstate_reraise(this, state, FALSE);
5338 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PAV32@@Z */
5339 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */
5340 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QAEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@PAV32@@Z */
5341 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEAAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@PEAV32@@Z */
5342 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_set, 8)
5343 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_set(basic_ios_wchar *this, basic_ostream_wchar *ostream)
5345 basic_ostream_wchar *ret = this->stream;
5347 TRACE("(%p %p)\n", this, ostream);
5349 this->stream = ostream;
5350 return ret;
5353 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
5354 /* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */
5355 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
5356 /* ?tie@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_ostream@GU?$char_traits@G@std@@@2@XZ */
5357 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_get, 4)
5358 basic_ostream_wchar* __thiscall basic_ios_wchar_tie_get(const basic_ios_wchar *this)
5360 TRACE("(%p)\n", this);
5361 return this->stream;
5364 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WD@Z */
5365 /* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WD@Z */
5366 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QBEGD@Z */
5367 /* ?widen@?$basic_ios@GU?$char_traits@G@std@@@std@@QEBAGD@Z */
5368 DEFINE_THISCALL_WRAPPER(basic_ios_wchar_widen, 8)
5369 wchar_t __thiscall basic_ios_wchar_widen(basic_ios_wchar *this, char ch)
5371 TRACE("(%p %c)\n", this, ch);
5372 return ctype_wchar_widen_ch(ctype_wchar_use_facet(this->strbuf->loc), ch);
5375 /* Caution: basic_ostream uses virtual inheritance.
5376 * All constructors have additional parameter that says if base class should be initialized.
5377 * Base class needs to be accessed using vbtable.
5379 static inline basic_ios_char* basic_ostream_char_get_basic_ios(basic_ostream_char *this)
5381 return (basic_ios_char*)((char*)this+this->vbtable[1]);
5384 static inline basic_ios_char* basic_ostream_char_to_basic_ios(basic_ostream_char *ptr)
5386 return (basic_ios_char*)((char*)ptr+basic_ostream_char_vbtable[1]);
5389 static inline basic_ostream_char* basic_ostream_char_from_basic_ios(basic_ios_char *ptr)
5391 return (basic_ostream_char*)((char*)ptr-basic_ostream_char_vbtable[1]);
5394 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
5395 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
5396 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor, 16)
5397 basic_ostream_char* __thiscall basic_ostream_char_ctor(basic_ostream_char *this,
5398 basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
5400 basic_ios_char *base;
5402 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
5404 if(virt_init) {
5405 this->vbtable = basic_ostream_char_vbtable;
5406 base = basic_ostream_char_get_basic_ios(this);
5407 basic_ios_char_ctor(base);
5408 }else {
5409 base = basic_ostream_char_get_basic_ios(this);
5412 base->base.vtable = &MSVCP_basic_ostream_char_vtable;
5413 basic_ios_char_init(base, strbuf, isstd);
5414 return this;
5417 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
5418 /* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
5419 DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor_uninitialized, 16)
5420 basic_ostream_char* __thiscall basic_ostream_char_ctor_uninitialized(basic_ostream_char *this,
5421 int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init)
5423 basic_ios_char *base;
5425 TRACE("(%p %d %x)\n", this, uninitialized, addstd);
5427 if(virt_init) {
5428 this->vbtable = basic_ostream_char_vbtable;
5429 base = basic_ostream_char_get_basic_ios(this);
5430 basic_ios_char_ctor(base);
5431 }else {
5432 base = basic_ostream_char_get_basic_ios(this);
5435 base->base.vtable = &MSVCP_basic_ostream_char_vtable;
5436 if(addstd)
5437 ios_base_Addstd(&base->base);
5438 return this;
5441 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
5442 /* ??1?$basic_ostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
5443 DEFINE_THISCALL_WRAPPER(basic_ostream_char_dtor, 4)
5444 void __thiscall basic_ostream_char_dtor(basic_ios_char *base)
5446 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
5448 /* don't destroy virtual base here */
5449 TRACE("(%p)\n", this);
5452 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
5453 /* ??_D?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
5454 DEFINE_THISCALL_WRAPPER(basic_ostream_char_vbase_dtor, 4)
5455 void __thiscall basic_ostream_char_vbase_dtor(basic_ostream_char *this)
5457 TRACE("(%p)\n", this);
5458 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(this));
5459 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(this));
5462 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostream_char_vector_dtor, 8)
5463 basic_ostream_char* __thiscall MSVCP_basic_ostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
5465 basic_ostream_char *this = basic_ostream_char_from_basic_ios(base);
5467 TRACE("(%p %x)\n", this, flags);
5469 if(flags & 2) {
5470 /* we have an array, with the number of elements stored before the first object */
5471 int i, *ptr = (int *)this-1;
5473 for(i=*ptr-1; i>=0; i--)
5474 basic_ostream_char_vbase_dtor(this+i);
5475 MSVCRT_operator_delete(ptr);
5476 } else {
5477 basic_ostream_char_vbase_dtor(this);
5478 if(flags & 1)
5479 MSVCRT_operator_delete(this);
5482 return this;
5485 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
5486 /* ?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
5487 DEFINE_THISCALL_WRAPPER(basic_ostream_char_flush, 4)
5488 basic_ostream_char* __thiscall basic_ostream_char_flush(basic_ostream_char *this)
5490 /* this function is not matching C++ specification */
5491 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5493 TRACE("(%p)\n", this);
5495 if(basic_ios_char_rdbuf_get(base) && ios_base_good(&base->base)
5496 && basic_streambuf_char_pubsync(basic_ios_char_rdbuf_get(base))==-1)
5497 basic_ios_char_setstate(base, IOSTATE_badbit);
5498 return this;
5501 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
5502 /* ?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
5503 DEFINE_THISCALL_WRAPPER(basic_ostream_char__Osfx, 4)
5504 void __thiscall basic_ostream_char__Osfx(basic_ostream_char *this)
5506 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5508 TRACE("(%p)\n", this);
5510 if(base->base.fmtfl & FMTFLAG_unitbuf)
5511 basic_ostream_char_flush(this);
5514 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
5515 /* ?osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
5516 DEFINE_THISCALL_WRAPPER(basic_ostream_char_osfx, 4)
5517 void __thiscall basic_ostream_char_osfx(basic_ostream_char *this)
5519 TRACE("(%p)\n", this);
5520 basic_ostream_char__Osfx(this);
5523 static BOOL basic_ostream_char_sentry_create(basic_ostream_char *ostr)
5525 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5527 if(basic_ios_char_rdbuf_get(base))
5528 call_basic_streambuf_char__Lock(base->strbuf);
5530 if(ios_base_good(&base->base) && base->stream)
5531 basic_ostream_char_flush(base->stream);
5533 return ios_base_good(&base->base);
5536 static void basic_ostream_char_sentry_destroy(basic_ostream_char *ostr)
5538 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5540 if(ios_base_good(&base->base) && !__uncaught_exception())
5541 basic_ostream_char_osfx(ostr);
5543 if(basic_ios_char_rdbuf_get(base))
5544 call_basic_streambuf_char__Unlock(base->strbuf);
5547 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE_NXZ */
5548 /* ?opfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA_NXZ */
5549 DEFINE_THISCALL_WRAPPER(basic_ostream_char_opfx, 4)
5550 MSVCP_bool __thiscall basic_ostream_char_opfx(basic_ostream_char *this)
5552 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5554 TRACE("(%p)\n", this);
5556 if(ios_base_good(&base->base) && base->stream)
5557 basic_ostream_char_flush(base->stream);
5558 return ios_base_good(&base->base);
5561 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
5562 /* ?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
5563 DEFINE_THISCALL_WRAPPER(basic_ostream_char_put, 8)
5564 basic_ostream_char* __thiscall basic_ostream_char_put(basic_ostream_char *this, char ch)
5566 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5568 TRACE("(%p %c)\n", this, ch);
5570 if(!basic_ostream_char_sentry_create(this)
5571 || basic_streambuf_char_sputc(base->strbuf, ch)==EOF) {
5572 basic_ostream_char_sentry_destroy(this);
5573 basic_ios_char_setstate(base, IOSTATE_badbit);
5574 return this;
5577 basic_ostream_char_sentry_destroy(this);
5578 return this;
5581 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
5582 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
5583 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp, 16)
5584 basic_ostream_char* __thiscall basic_ostream_char_seekp(basic_ostream_char *this, streamoff off, int way)
5586 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5588 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), way);
5590 if(!ios_base_fail(&base->base)) {
5591 fpos_int seek;
5593 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
5594 &seek, off, way, OPENMODE_out);
5595 if(seek.off==0 && seek.pos==-1 && seek.state==0)
5596 basic_ios_char_setstate(base, IOSTATE_failbit);
5598 return this;
5601 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
5602 /* ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
5603 DEFINE_THISCALL_WRAPPER(basic_ostream_char_seekp_fpos, 28)
5604 basic_ostream_char* __thiscall basic_ostream_char_seekp_fpos(basic_ostream_char *this, fpos_int pos)
5606 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5608 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
5610 if(!ios_base_fail(&base->base)) {
5611 fpos_int seek;
5613 basic_streambuf_char_pubseekpos(basic_ios_char_rdbuf_get(base),
5614 &seek, pos, OPENMODE_out);
5615 if(seek.off==0 && seek.pos==-1 && seek.state==0)
5616 basic_ios_char_setstate(base, IOSTATE_failbit);
5618 return this;
5621 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
5622 /* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
5623 DEFINE_THISCALL_WRAPPER(basic_ostream_char_tellp, 8)
5624 fpos_int* __thiscall basic_ostream_char_tellp(basic_ostream_char *this, fpos_int *ret)
5626 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5628 TRACE("(%p)\n", this);
5630 if(!ios_base_fail(&base->base)) {
5631 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
5632 ret, 0, SEEKDIR_cur, OPENMODE_out);
5633 }else {
5634 ret->off = 0;
5635 ret->pos = -1;
5636 ret->state = 0;
5638 return ret;
5641 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@PBDH@Z */
5642 /* ?write@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEBD_J@Z */
5643 DEFINE_THISCALL_WRAPPER(basic_ostream_char_write, 16)
5644 basic_ostream_char* __thiscall basic_ostream_char_write(basic_ostream_char *this, const char *str, streamsize count)
5646 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5648 TRACE("(%p %s %s)\n", this, debugstr_a(str), wine_dbgstr_longlong(count));
5650 if(!basic_ostream_char_sentry_create(this)
5651 || basic_streambuf_char_sputn(base->strbuf, str, count)!=count) {
5652 basic_ostream_char_sentry_destroy(this);
5653 basic_ios_char_setstate(base, IOSTATE_badbit);
5654 return this;
5657 basic_ostream_char_sentry_destroy(this);
5658 return this;
5661 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@F@Z */
5662 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@F@Z */
5663 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_short, 8)
5664 basic_ostream_char* __thiscall basic_ostream_char_print_short(basic_ostream_char *this, short val)
5666 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5667 int state = IOSTATE_goodbit;
5669 TRACE("(%p %d)\n", this, val);
5671 if(basic_ostream_char_sentry_create(this)) {
5672 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5673 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5674 ostreambuf_iterator_char dest = {0, strbuf};
5676 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base),
5677 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
5678 ? (LONG)((unsigned short)val) : (LONG)val);
5680 basic_ostream_char_sentry_destroy(this);
5682 basic_ios_char_setstate(base, state);
5683 return this;
5686 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@G@Z */
5687 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@G@Z */
5688 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ushort, 8)
5689 basic_ostream_char* __thiscall basic_ostream_char_print_ushort(basic_ostream_char *this, unsigned short val)
5691 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5692 int state = IOSTATE_goodbit;
5694 TRACE("(%p %u)\n", this, val);
5696 if(basic_ostream_char_sentry_create(this)) {
5697 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5698 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5699 ostreambuf_iterator_char dest = {0, strbuf};
5701 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5703 basic_ostream_char_sentry_destroy(this);
5705 basic_ios_char_setstate(base, state);
5706 return this;
5709 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z */
5710 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z */
5711 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@J@Z */
5712 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@J@Z */
5713 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int, 8)
5714 basic_ostream_char* __thiscall basic_ostream_char_print_int(basic_ostream_char *this, int val)
5716 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5717 int state = IOSTATE_goodbit;
5719 TRACE("(%p %d)\n", this, val);
5721 if(basic_ostream_char_sentry_create(this)) {
5722 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5723 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5724 ostreambuf_iterator_char dest = {0, strbuf};
5726 num_put_char_put_long(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5728 basic_ostream_char_sentry_destroy(this);
5730 basic_ios_char_setstate(base, state);
5731 return this;
5734 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@I@Z */
5735 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@I@Z */
5736 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@K@Z */
5737 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z */
5738 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint, 8)
5739 basic_ostream_char* __thiscall basic_ostream_char_print_uint(basic_ostream_char *this, unsigned int val)
5741 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5742 int state = IOSTATE_goodbit;
5744 TRACE("(%p %u)\n", this, val);
5746 if(basic_ostream_char_sentry_create(this)) {
5747 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5748 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5749 ostreambuf_iterator_char dest = {0, strbuf};
5751 num_put_char_put_ulong(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5753 basic_ostream_char_sentry_destroy(this);
5755 basic_ios_char_setstate(base, state);
5756 return this;
5759 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@M@Z */
5760 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@M@Z */
5761 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_float, 8)
5762 basic_ostream_char* __thiscall basic_ostream_char_print_float(basic_ostream_char *this, float val)
5764 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5765 int state = IOSTATE_goodbit;
5767 TRACE("(%p %f)\n", this, val);
5769 if(basic_ostream_char_sentry_create(this)) {
5770 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5771 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5772 ostreambuf_iterator_char dest = {0, strbuf};
5774 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5776 basic_ostream_char_sentry_destroy(this);
5778 basic_ios_char_setstate(base, state);
5779 return this;
5782 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@N@Z */
5783 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@N@Z */
5784 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_double, 12)
5785 basic_ostream_char* __thiscall basic_ostream_char_print_double(basic_ostream_char *this, double val)
5787 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5788 int state = IOSTATE_goodbit;
5790 TRACE("(%p %lf)\n", this, val);
5792 if(basic_ostream_char_sentry_create(this)) {
5793 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5794 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5795 ostreambuf_iterator_char dest = {0, strbuf};
5797 num_put_char_put_double(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5799 basic_ostream_char_sentry_destroy(this);
5801 basic_ios_char_setstate(base, state);
5802 return this;
5805 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@O@Z */
5806 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@O@Z */
5807 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ldouble, 12)
5808 basic_ostream_char* __thiscall basic_ostream_char_print_ldouble(basic_ostream_char *this, double val)
5810 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5811 int state = IOSTATE_goodbit;
5813 TRACE("(%p %lf)\n", this, val);
5815 if(basic_ostream_char_sentry_create(this)) {
5816 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5817 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5818 ostreambuf_iterator_char dest = {0, strbuf};
5820 num_put_char_put_ldouble(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5822 basic_ostream_char_sentry_destroy(this);
5824 basic_ios_char_setstate(base, state);
5825 return this;
5828 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
5829 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
5830 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_streambuf, 8)
5831 basic_ostream_char* __thiscall basic_ostream_char_print_streambuf(basic_ostream_char *this, basic_streambuf_char *val)
5833 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5834 IOSB_iostate state = IOSTATE_badbit;
5835 int c = '\n';
5837 TRACE("(%p %p)\n", this, val);
5839 if(basic_ostream_char_sentry_create(this)) {
5840 for(c = basic_streambuf_char_sgetc(val); c!=EOF;
5841 c = basic_streambuf_char_snextc(val)) {
5842 state = IOSTATE_goodbit;
5844 if(basic_streambuf_char_sputc(base->strbuf, c) == EOF) {
5845 state = IOSTATE_badbit;
5846 break;
5849 }else {
5850 state = IOSTATE_badbit;
5852 basic_ostream_char_sentry_destroy(this);
5854 ios_base_width_set(&base->base, 0);
5855 basic_ios_char_setstate(base, state);
5856 return this;
5859 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@PBX@Z */
5860 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEBX@Z */
5861 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_ptr, 8)
5862 basic_ostream_char* __thiscall basic_ostream_char_print_ptr(basic_ostream_char *this, const void *val)
5864 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5865 int state = IOSTATE_goodbit;
5867 TRACE("(%p %p)\n", this, val);
5869 if(basic_ostream_char_sentry_create(this)) {
5870 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5871 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5872 ostreambuf_iterator_char dest = {0, strbuf};
5874 num_put_char_put_ptr(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5876 basic_ostream_char_sentry_destroy(this);
5878 basic_ios_char_setstate(base, state);
5879 return this;
5882 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_J@Z */
5883 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_J@Z */
5884 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_int64, 12)
5885 basic_ostream_char* __thiscall basic_ostream_char_print_int64(basic_ostream_char *this, __int64 val)
5887 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5888 int state = IOSTATE_goodbit;
5890 TRACE("(%p)\n", this);
5892 if(basic_ostream_char_sentry_create(this)) {
5893 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5894 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5895 ostreambuf_iterator_char dest = {0, strbuf};
5897 num_put_char_put_int64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5899 basic_ostream_char_sentry_destroy(this);
5901 basic_ios_char_setstate(base, state);
5902 return this;
5905 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_K@Z */
5906 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_K@Z */
5907 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_uint64, 12)
5908 basic_ostream_char* __thiscall basic_ostream_char_print_uint64(basic_ostream_char *this, unsigned __int64 val)
5910 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5911 int state = IOSTATE_goodbit;
5913 TRACE("(%p)\n", this);
5915 if(basic_ostream_char_sentry_create(this)) {
5916 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5917 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5918 ostreambuf_iterator_char dest = {0, strbuf};
5920 num_put_char_put_uint64(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5922 basic_ostream_char_sentry_destroy(this);
5924 basic_ios_char_setstate(base, state);
5925 return this;
5928 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@_N@Z */
5929 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@_N@Z */
5930 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_bool, 8)
5931 basic_ostream_char* __thiscall basic_ostream_char_print_bool(basic_ostream_char *this, MSVCP_bool val)
5933 basic_ios_char *base = basic_ostream_char_get_basic_ios(this);
5934 int state = IOSTATE_goodbit;
5936 TRACE("(%p %x)\n", this, val);
5938 if(basic_ostream_char_sentry_create(this)) {
5939 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
5940 const num_put *numput = num_put_char_use_facet(strbuf->loc);
5941 ostreambuf_iterator_char dest = {0, strbuf};
5943 num_put_char_put_bool(numput, &dest, dest, &base->base, basic_ios_char_fill_get(base), val);
5945 basic_ostream_char_sentry_destroy(this);
5947 basic_ios_char_setstate(base, state);
5948 return this;
5951 /* ?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z */
5952 /* ?endl@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@1@AEAV21@@Z */
5953 basic_ostream_char* __cdecl basic_ostream_char_endl(basic_ostream_char *ostr)
5955 TRACE("(%p)\n", ostr);
5957 basic_ostream_char_put(ostr, '\n');
5958 basic_ostream_char_flush(ostr);
5959 return ostr;
5962 /* $?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 */
5963 /* ??$?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 */
5964 basic_ostream_char* __cdecl basic_ostream_char_print_bstr(basic_ostream_char *ostr, const basic_string_char *str)
5966 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
5967 IOSB_iostate state = IOSTATE_goodbit;
5969 TRACE("(%p %p)\n", ostr, str);
5971 if(basic_ostream_char_sentry_create(ostr)) {
5972 MSVCP_size_t len = MSVCP_basic_string_char_length(str);
5973 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
5975 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
5976 for(; pad!=0; pad--) {
5977 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5978 state = IOSTATE_badbit;
5979 break;
5984 if(state == IOSTATE_goodbit) {
5985 if(basic_streambuf_char_sputn(base->strbuf, MSVCP_basic_string_char_c_str(str), len) != len)
5986 state = IOSTATE_badbit;
5989 if(state == IOSTATE_goodbit) {
5990 for(; pad!=0; pad--) {
5991 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
5992 state = IOSTATE_badbit;
5993 break;
5998 base->base.wide = 0;
5999 }else {
6000 state = IOSTATE_badbit;
6002 basic_ostream_char_sentry_destroy(ostr);
6004 basic_ios_char_setstate(base, state);
6005 return ostr;
6008 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@C@Z */
6009 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@C@Z */
6010 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z */
6011 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@D@Z */
6012 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@E@Z */
6013 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@E@Z */
6014 basic_ostream_char* __cdecl basic_ostream_char_print_ch(basic_ostream_char *ostr, char ch)
6016 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6017 IOSB_iostate state = IOSTATE_goodbit;
6019 TRACE("(%p %d)\n", ostr, ch);
6021 if(basic_ostream_char_sentry_create(ostr)) {
6022 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
6024 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6025 for(; pad!=0; pad--) {
6026 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6027 state = IOSTATE_badbit;
6028 break;
6033 if(state == IOSTATE_goodbit) {
6034 if(basic_streambuf_char_sputc(base->strbuf, ch) == EOF)
6035 state = IOSTATE_badbit;
6038 if(state == IOSTATE_goodbit) {
6039 for(; pad!=0; pad--) {
6040 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6041 state = IOSTATE_badbit;
6042 break;
6047 base->base.wide = 0;
6048 }else {
6049 state = IOSTATE_badbit;
6051 basic_ostream_char_sentry_destroy(ostr);
6053 basic_ios_char_setstate(base, state);
6054 return ostr;
6057 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBC@Z */
6058 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBC@Z */
6059 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z */
6060 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z */
6061 /* ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBE@Z */
6062 /* ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBE@Z */
6063 basic_ostream_char* __cdecl basic_ostream_char_print_str(basic_ostream_char *ostr, const char *str)
6065 basic_ios_char *base = basic_ostream_char_get_basic_ios(ostr);
6066 IOSB_iostate state = IOSTATE_goodbit;
6068 TRACE("(%p %s)\n", ostr, str);
6070 if(basic_ostream_char_sentry_create(ostr)) {
6071 MSVCP_size_t len = strlen(str);
6072 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
6074 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6075 for(; pad!=0; pad--) {
6076 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6077 state = IOSTATE_badbit;
6078 break;
6083 if(state == IOSTATE_goodbit) {
6084 if(basic_streambuf_char_sputn(base->strbuf, str, len) != len)
6085 state = IOSTATE_badbit;
6088 if(state == IOSTATE_goodbit) {
6089 for(; pad!=0; pad--) {
6090 if(basic_streambuf_char_sputc(base->strbuf, base->fillch) == EOF) {
6091 state = IOSTATE_badbit;
6092 break;
6097 base->base.wide = 0;
6098 }else {
6099 state = IOSTATE_badbit;
6101 basic_ostream_char_sentry_destroy(ostr);
6103 basic_ios_char_setstate(base, state);
6104 return ostr;
6107 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
6108 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
6109 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func, 8)
6110 basic_ostream_char* __thiscall basic_ostream_char_print_func(basic_ostream_char *this,
6111 basic_ostream_char* (__cdecl *pfunc)(basic_ostream_char*))
6113 TRACE("(%p %p)\n", this, pfunc);
6114 pfunc(this);
6115 return this;
6118 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
6119 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
6120 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_basic_ios, 8)
6121 basic_ostream_char* __thiscall basic_ostream_char_print_func_basic_ios(basic_ostream_char *this,
6122 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
6124 TRACE("(%p %p)\n", this, pfunc);
6125 pfunc(basic_ostream_char_get_basic_ios(this));
6126 return this;
6129 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
6130 /* ??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
6131 DEFINE_THISCALL_WRAPPER(basic_ostream_char_print_func_ios_base, 8)
6132 basic_ostream_char* __thiscall basic_ostream_char_print_func_ios_base(
6133 basic_ostream_char *this, ios_base* (__cdecl *pfunc)(ios_base*))
6135 TRACE("(%p %p)\n", this, pfunc);
6136 pfunc(&basic_ostream_char_get_basic_ios(this)->base);
6137 return this;
6140 /* Caution: basic_ostream uses virtual inheritance. */
6141 static inline basic_ios_wchar* basic_ostream_wchar_get_basic_ios(basic_ostream_wchar *this)
6143 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
6146 static inline basic_ios_wchar* basic_ostream_wchar_to_basic_ios(basic_ostream_wchar *ptr)
6148 return (basic_ios_wchar*)((char*)ptr+basic_ostream_wchar_vbtable[1]);
6151 static inline basic_ostream_wchar* basic_ostream_wchar_from_basic_ios(basic_ios_wchar *ptr)
6153 return (basic_ostream_wchar*)((char*)ptr-basic_ostream_wchar_vbtable[1]);
6156 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
6157 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
6158 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_ctor, 16)
6159 basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor(basic_ostream_wchar *this,
6160 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
6162 basic_ios_wchar *base;
6164 TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init);
6166 if(virt_init) {
6167 this->vbtable = basic_ostream_wchar_vbtable;
6168 base = basic_ostream_wchar_get_basic_ios(this);
6169 basic_ios_wchar_ctor(base);
6170 }else {
6171 base = basic_ostream_wchar_get_basic_ios(this);
6174 base->base.vtable = &MSVCP_basic_ostream_wchar_vtable;
6175 basic_ios_wchar_init(base, strbuf, isstd);
6176 return this;
6179 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
6180 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
6181 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor, 16)
6182 basic_ostream_wchar* __thiscall basic_ostream_short_ctor(basic_ostream_wchar *this,
6183 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
6185 basic_ostream_wchar_ctor(this, strbuf, isstd, virt_init);
6186 basic_ostream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_ostream_short_vtable;
6187 return this;
6190 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
6191 /* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
6192 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_ctor_uninitialized, 16)
6193 basic_ostream_wchar* __thiscall basic_ostream_wchar_ctor_uninitialized(basic_ostream_wchar *this,
6194 int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init)
6196 basic_ios_wchar *base;
6198 TRACE("(%p %d %x)\n", this, uninitialized, addstd);
6200 if(virt_init) {
6201 this->vbtable = basic_ostream_wchar_vbtable;
6202 base = basic_ostream_wchar_get_basic_ios(this);
6203 basic_ios_wchar_ctor(base);
6204 }else {
6205 base = basic_ostream_wchar_get_basic_ios(this);
6208 base->base.vtable = &MSVCP_basic_ostream_wchar_vtable;
6209 if(addstd)
6210 ios_base_Addstd(&base->base);
6211 return this;
6214 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */
6215 /* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */
6216 DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor_uninitialized, 16)
6217 basic_ostream_wchar* __thiscall basic_ostream_short_ctor_uninitialized(basic_ostream_wchar *this,
6218 int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init)
6220 basic_ostream_wchar_ctor_uninitialized(this, uninitialized, addstd, virt_init);
6221 basic_ostream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_ostream_short_vtable;
6222 return this;
6225 /* ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
6226 /* ??1?$basic_ostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
6227 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
6228 /* ??1?$basic_ostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
6229 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_dtor, 4)
6230 void __thiscall basic_ostream_wchar_dtor(basic_ios_wchar *base)
6232 basic_ostream_wchar *this = basic_ostream_wchar_from_basic_ios(base);
6234 /* don't destroy virtual base here */
6235 TRACE("(%p)\n", this);
6238 /* ??_D?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
6239 /* ??_D?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
6240 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
6241 /* ??_D?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
6242 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_vbase_dtor, 4)
6243 void __thiscall basic_ostream_wchar_vbase_dtor(basic_ostream_wchar *this)
6245 TRACE("(%p)\n", this);
6246 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(this));
6247 basic_ios_wchar_dtor(basic_ostream_wchar_get_basic_ios(this));
6250 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostream_wchar_vector_dtor, 8)
6251 basic_ostream_wchar* __thiscall MSVCP_basic_ostream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
6253 basic_ostream_wchar *this = basic_ostream_wchar_from_basic_ios(base);
6255 TRACE("(%p %x)\n", this, flags);
6257 if(flags & 2) {
6258 /* we have an array, with the number of elements stored before the first object */
6259 int i, *ptr = (int *)this-1;
6261 for(i=*ptr-1; i>=0; i--)
6262 basic_ostream_wchar_vbase_dtor(this+i);
6263 MSVCRT_operator_delete(ptr);
6264 } else {
6265 basic_ostream_wchar_vbase_dtor(this);
6266 if(flags & 1)
6267 MSVCRT_operator_delete(this);
6270 return this;
6273 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostream_short_vector_dtor, 8)
6274 basic_ostream_wchar* __thiscall MSVCP_basic_ostream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
6276 return MSVCP_basic_ostream_wchar_vector_dtor(base, flags);
6279 /* ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */
6280 /* ?flush@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */
6281 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
6282 /* ?flush@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
6283 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_flush, 4)
6284 basic_ostream_wchar* __thiscall basic_ostream_wchar_flush(basic_ostream_wchar *this)
6286 /* this function is not matching C++ specification */
6287 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6289 TRACE("(%p)\n", this);
6291 if(basic_ios_wchar_rdbuf_get(base) && ios_base_good(&base->base)
6292 && basic_streambuf_wchar_pubsync(basic_ios_wchar_rdbuf_get(base))==-1)
6293 basic_ios_wchar_setstate(base, IOSTATE_badbit);
6294 return this;
6297 /* ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
6298 /* ?_Osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
6299 /* ?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
6300 /* ?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
6301 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar__Osfx, 4)
6302 void __thiscall basic_ostream_wchar__Osfx(basic_ostream_wchar *this)
6304 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6306 TRACE("(%p)\n", this);
6308 if(base->base.fmtfl & FMTFLAG_unitbuf)
6309 basic_ostream_wchar_flush(this);
6312 /* ?osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
6313 /* ?osfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
6314 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
6315 /* ?osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
6316 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_osfx, 4)
6317 void __thiscall basic_ostream_wchar_osfx(basic_ostream_wchar *this)
6319 TRACE("(%p)\n", this);
6320 basic_ostream_wchar__Osfx(this);
6323 static BOOL basic_ostream_wchar_sentry_create(basic_ostream_wchar *ostr)
6325 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
6327 if(basic_ios_wchar_rdbuf_get(base))
6328 basic_streambuf_wchar__Lock(base->strbuf);
6330 if(ios_base_good(&base->base) && base->stream)
6331 basic_ostream_wchar_flush(base->stream);
6333 return ios_base_good(&base->base);
6336 static void basic_ostream_wchar_sentry_destroy(basic_ostream_wchar *ostr)
6338 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
6340 if(ios_base_good(&base->base) && !__uncaught_exception())
6341 basic_ostream_wchar_osfx(ostr);
6343 if(basic_ios_wchar_rdbuf_get(base))
6344 basic_streambuf_wchar__Unlock(base->strbuf);
6347 /* ?opfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE_NXZ */
6348 /* ?opfx@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA_NXZ */
6349 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE_NXZ */
6350 /* ?opfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA_NXZ */
6351 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_opfx, 4)
6352 MSVCP_bool __thiscall basic_ostream_wchar_opfx(basic_ostream_wchar *this)
6354 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6356 TRACE("(%p)\n", this);
6358 if(ios_base_good(&base->base) && base->stream)
6359 basic_ostream_wchar_flush(base->stream);
6360 return ios_base_good(&base->base);
6363 /* ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */
6364 /* ?put@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */
6365 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
6366 /* ?put@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
6367 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_put, 8)
6368 basic_ostream_wchar* __thiscall basic_ostream_wchar_put(basic_ostream_wchar *this, wchar_t ch)
6370 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6372 TRACE("(%p %c)\n", this, ch);
6374 if(!basic_ostream_wchar_sentry_create(this)
6375 || basic_streambuf_wchar_sputc(base->strbuf, ch)==WEOF) {
6376 basic_ostream_wchar_sentry_destroy(this);
6377 basic_ios_wchar_setstate(base, IOSTATE_badbit);
6378 return this;
6381 basic_ostream_wchar_sentry_destroy(this);
6382 return this;
6385 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */
6386 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */
6387 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
6388 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
6389 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp, 16)
6390 basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp(basic_ostream_wchar *this, streamoff off, int way)
6392 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6394 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), way);
6396 if(!ios_base_fail(&base->base)) {
6397 fpos_int seek;
6399 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
6400 &seek, off, way, OPENMODE_out);
6401 if(seek.off==0 && seek.pos==-1 && seek.state==0)
6402 basic_ios_wchar_setstate(base, IOSTATE_failbit);
6404 return this;
6407 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
6408 /* ?seekp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
6409 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
6410 /* ?seekp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
6411 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_seekp_fpos, 28)
6412 basic_ostream_wchar* __thiscall basic_ostream_wchar_seekp_fpos(basic_ostream_wchar *this, fpos_int pos)
6414 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6416 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
6418 if(!ios_base_fail(&base->base)) {
6419 fpos_int seek;
6421 basic_streambuf_wchar_pubseekpos(basic_ios_wchar_rdbuf_get(base),
6422 &seek, pos, OPENMODE_out);
6423 if(seek.off==0 && seek.pos==-1 && seek.state==0)
6424 basic_ios_wchar_setstate(base, IOSTATE_failbit);
6426 return this;
6429 /* ?tellp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */
6430 /* ?tellp@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
6431 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
6432 /* ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
6433 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_tellp, 8)
6434 fpos_int* __thiscall basic_ostream_wchar_tellp(basic_ostream_wchar *this, fpos_int *ret)
6436 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6438 TRACE("(%p)\n", this);
6440 if(!ios_base_fail(&base->base)) {
6441 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
6442 ret, 0, SEEKDIR_cur, OPENMODE_out);
6443 }else {
6444 ret->off = 0;
6445 ret->pos = -1;
6446 ret->state = 0;
6448 return ret;
6451 /* ?write@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PB_WH@Z */
6452 /* ?write@?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEB_W_J@Z */
6453 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV12@PBGH@Z */
6454 /* ?write@?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEBG_J@Z */
6455 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_write, 16)
6456 basic_ostream_wchar* __thiscall basic_ostream_wchar_write(basic_ostream_wchar *this, const wchar_t *str, streamsize count)
6458 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6460 TRACE("(%p %s %s)\n", this, debugstr_w(str), wine_dbgstr_longlong(count));
6462 if(!basic_ostream_wchar_sentry_create(this)
6463 || basic_streambuf_wchar_sputn(base->strbuf, str, count)!=count) {
6464 basic_ostream_wchar_sentry_destroy(this);
6465 basic_ios_wchar_setstate(base, IOSTATE_badbit);
6466 return this;
6469 basic_ostream_wchar_sentry_destroy(this);
6470 return this;
6473 static basic_ostream_wchar* basic_ostream_print_short(basic_ostream_wchar *this, short val, const num_put *numput)
6475 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6476 int state = IOSTATE_goodbit;
6478 TRACE("(%p %d)\n", this, val);
6480 if(basic_ostream_wchar_sentry_create(this)) {
6481 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6482 ostreambuf_iterator_wchar dest = {0, strbuf};
6484 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base),
6485 (ios_base_flags_get(&base->base) & FMTFLAG_basefield & (FMTFLAG_oct | FMTFLAG_hex))
6486 ? (LONG)((unsigned short)val) : (LONG)val);
6488 basic_ostream_wchar_sentry_destroy(this);
6490 basic_ios_wchar_setstate(base, state);
6491 return this;
6494 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@F@Z */
6495 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@F@Z */
6496 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_short, 8)
6497 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_short(basic_ostream_wchar *this, short val)
6499 return basic_ostream_print_short(this, val, num_put_wchar_use_facet(
6500 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6503 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@F@Z */
6504 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@F@Z */
6505 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_short, 8)
6506 basic_ostream_wchar* __thiscall basic_ostream_short_print_short(basic_ostream_wchar *this, short val)
6508 return basic_ostream_print_short(this, val, num_put_short_use_facet(
6509 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6512 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@G@Z */
6513 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@G@Z */
6514 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ushort, 8)
6515 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ushort(basic_ostream_wchar *this, unsigned short val)
6517 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6518 int state = IOSTATE_goodbit;
6520 TRACE("(%p %u)\n", this, val);
6522 if(basic_ostream_wchar_sentry_create(this)) {
6523 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6524 const num_put *numput = num_put_wchar_use_facet(strbuf->loc);
6525 ostreambuf_iterator_wchar dest = {0, strbuf};
6527 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6529 basic_ostream_wchar_sentry_destroy(this);
6531 basic_ios_wchar_setstate(base, state);
6532 return this;
6535 static basic_ostream_wchar* basic_ostream_print_int(basic_ostream_wchar *this, int val, const num_put *numput)
6537 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6538 int state = IOSTATE_goodbit;
6540 TRACE("(%p %d)\n", this, val);
6542 if(basic_ostream_wchar_sentry_create(this)) {
6543 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6544 ostreambuf_iterator_wchar dest = {0, strbuf};
6546 num_put_wchar_put_long(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6548 basic_ostream_wchar_sentry_destroy(this);
6550 basic_ios_wchar_setstate(base, state);
6551 return this;
6554 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@H@Z */
6555 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@H@Z */
6556 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@J@Z */
6557 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@J@Z */
6558 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int, 8)
6559 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int(basic_ostream_wchar *this, int val)
6561 return basic_ostream_print_int(this, val, num_put_wchar_use_facet(
6562 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6565 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@H@Z */
6566 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@H@Z */
6567 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@J@Z */
6568 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@J@Z */
6569 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int, 8)
6570 basic_ostream_wchar* __thiscall basic_ostream_short_print_int(basic_ostream_wchar *this, int val)
6572 return basic_ostream_print_int(this, val, num_put_short_use_facet(
6573 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6576 static basic_ostream_wchar* basic_ostream_print_uint(basic_ostream_wchar *this, unsigned int val, const num_put *numput)
6578 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6579 int state = IOSTATE_goodbit;
6581 TRACE("(%p %u)\n", this, val);
6583 if(basic_ostream_wchar_sentry_create(this)) {
6584 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6585 ostreambuf_iterator_wchar dest = {0, strbuf};
6587 num_put_wchar_put_ulong(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6589 basic_ostream_wchar_sentry_destroy(this);
6591 basic_ios_wchar_setstate(base, state);
6592 return this;
6595 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@I@Z */
6596 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@I@Z */
6597 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@K@Z */
6598 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@K@Z */
6599 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint, 8)
6600 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint(basic_ostream_wchar *this, unsigned int val)
6602 return basic_ostream_print_uint(this, val, num_put_wchar_use_facet(
6603 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6606 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@I@Z */
6607 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@I@Z */
6608 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@K@Z */
6609 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@K@Z */
6610 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint, 8)
6611 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint(basic_ostream_wchar *this, unsigned int val)
6613 return basic_ostream_print_uint(this, val, num_put_short_use_facet(
6614 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6617 static basic_ostream_wchar* basic_ostream_print_float(basic_ostream_wchar *this, float val, const num_put *numput)
6619 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6620 int state = IOSTATE_goodbit;
6622 TRACE("(%p %f)\n", this, val);
6624 if(basic_ostream_wchar_sentry_create(this)) {
6625 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6626 ostreambuf_iterator_wchar dest = {0, strbuf};
6628 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6630 basic_ostream_wchar_sentry_destroy(this);
6632 basic_ios_wchar_setstate(base, state);
6633 return this;
6636 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@M@Z */
6637 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@M@Z */
6638 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_float, 8)
6639 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_float(basic_ostream_wchar *this, float val)
6641 return basic_ostream_print_float(this, val, num_put_wchar_use_facet(
6642 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6645 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@M@Z */
6646 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@M@Z */
6647 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_float, 8)
6648 basic_ostream_wchar* __thiscall basic_ostream_short_print_float(basic_ostream_wchar *this, float val)
6650 return basic_ostream_print_float(this, val, num_put_short_use_facet(
6651 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6654 static basic_ostream_wchar* basic_ostream_print_double(basic_ostream_wchar *this, double val, const num_put *numput)
6656 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6657 int state = IOSTATE_goodbit;
6659 TRACE("(%p %lf)\n", this, val);
6661 if(basic_ostream_wchar_sentry_create(this)) {
6662 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6663 ostreambuf_iterator_wchar dest = {0, strbuf};
6665 num_put_wchar_put_double(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6667 basic_ostream_wchar_sentry_destroy(this);
6669 basic_ios_wchar_setstate(base, state);
6670 return this;
6673 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@N@Z */
6674 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@N@Z */
6675 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_double, 12)
6676 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_double(basic_ostream_wchar *this, double val)
6678 return basic_ostream_print_double(this, val, num_put_wchar_use_facet(
6679 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6682 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@N@Z */
6683 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@N@Z */
6684 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_double, 12)
6685 basic_ostream_wchar* __thiscall basic_ostream_short_print_double(basic_ostream_wchar *this, double val)
6687 return basic_ostream_print_double(this, val, num_put_short_use_facet(
6688 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6691 static basic_ostream_wchar* basic_ostream_print_ldouble(basic_ostream_wchar *this, double val, const num_put *numput)
6693 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6694 int state = IOSTATE_goodbit;
6696 TRACE("(%p %lf)\n", this, val);
6698 if(basic_ostream_wchar_sentry_create(this)) {
6699 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6700 ostreambuf_iterator_wchar dest = {0, strbuf};
6702 num_put_wchar_put_ldouble(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6704 basic_ostream_wchar_sentry_destroy(this);
6706 basic_ios_wchar_setstate(base, state);
6707 return this;
6710 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@O@Z */
6711 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@O@Z */
6712 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ldouble, 12)
6713 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ldouble(basic_ostream_wchar *this, double val)
6715 return basic_ostream_print_ldouble(this, val, num_put_wchar_use_facet(
6716 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6719 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@O@Z */
6720 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@O@Z */
6721 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ldouble, 12)
6722 basic_ostream_wchar* __thiscall basic_ostream_short_print_ldouble(basic_ostream_wchar *this, double val)
6724 return basic_ostream_print_ldouble(this, val, num_put_short_use_facet(
6725 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6728 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
6729 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
6730 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
6731 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
6732 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_streambuf, 8)
6733 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_streambuf(basic_ostream_wchar *this, basic_streambuf_wchar *val)
6735 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6736 IOSB_iostate state = IOSTATE_badbit;
6737 unsigned short c = '\n';
6739 TRACE("(%p %p)\n", this, val);
6741 if(basic_ostream_wchar_sentry_create(this)) {
6742 for(c = basic_streambuf_wchar_sgetc(val); c!=WEOF;
6743 c = basic_streambuf_wchar_snextc(val)) {
6744 state = IOSTATE_goodbit;
6746 if(basic_streambuf_wchar_sputc(base->strbuf, c) == WEOF) {
6747 state = IOSTATE_badbit;
6748 break;
6751 }else {
6752 state = IOSTATE_badbit;
6754 basic_ostream_wchar_sentry_destroy(this);
6756 ios_base_width_set(&base->base, 0);
6757 basic_ios_wchar_setstate(base, state);
6758 return this;
6761 static basic_ostream_wchar* basic_ostream_print_ptr(basic_ostream_wchar *this, const void *val, const num_put *numput)
6763 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6764 int state = IOSTATE_goodbit;
6766 TRACE("(%p %p)\n", this, val);
6768 if(basic_ostream_wchar_sentry_create(this)) {
6769 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6770 ostreambuf_iterator_wchar dest = {0, strbuf};
6772 num_put_wchar_put_ptr(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6774 basic_ostream_wchar_sentry_destroy(this);
6776 basic_ios_wchar_setstate(base, state);
6777 return this;
6780 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PBX@Z */
6781 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEBX@Z */
6782 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_ptr, 8)
6783 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_ptr(basic_ostream_wchar *this, const void *val)
6785 return basic_ostream_print_ptr(this, val, num_put_wchar_use_facet(
6786 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6789 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@PBX@Z */
6790 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEBX@Z */
6791 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_ptr, 8)
6792 basic_ostream_wchar* __thiscall basic_ostream_short_print_ptr(basic_ostream_wchar *this, const void *val)
6794 return basic_ostream_print_ptr(this, val, num_put_short_use_facet(
6795 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6798 static basic_ostream_wchar* basic_ostream_print_int64(basic_ostream_wchar *this, __int64 val, const num_put *numput)
6800 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6801 int state = IOSTATE_goodbit;
6803 TRACE("(%p)\n", this);
6805 if(basic_ostream_wchar_sentry_create(this)) {
6806 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6807 ostreambuf_iterator_wchar dest = {0, strbuf};
6809 num_put_wchar_put_int64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6811 basic_ostream_wchar_sentry_destroy(this);
6813 basic_ios_wchar_setstate(base, state);
6814 return this;
6817 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_J@Z */
6818 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_J@Z */
6819 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_int64, 12)
6820 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_int64(basic_ostream_wchar *this, __int64 val)
6822 return basic_ostream_print_int64(this, val, num_put_wchar_use_facet(
6823 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6826 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_J@Z */
6827 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_J@Z */
6828 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_int64, 12)
6829 basic_ostream_wchar* __thiscall basic_ostream_short_print_int64(basic_ostream_wchar *this, __int64 val)
6831 return basic_ostream_print_int64(this, val, num_put_short_use_facet(
6832 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6835 static basic_ostream_wchar* basic_ostream_print_uint64(basic_ostream_wchar *this, unsigned __int64 val, const num_put *numput)
6837 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6838 int state = IOSTATE_goodbit;
6840 TRACE("(%p)\n", this);
6842 if(basic_ostream_wchar_sentry_create(this)) {
6843 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6844 ostreambuf_iterator_wchar dest = {0, strbuf};
6846 num_put_wchar_put_uint64(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6848 basic_ostream_wchar_sentry_destroy(this);
6850 basic_ios_wchar_setstate(base, state);
6851 return this;
6854 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_K@Z */
6855 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_K@Z */
6856 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_uint64, 12)
6857 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
6859 return basic_ostream_print_uint64(this, val, num_put_wchar_use_facet(
6860 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6863 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_K@Z */
6864 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_K@Z */
6865 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_uint64, 12)
6866 basic_ostream_wchar* __thiscall basic_ostream_short_print_uint64(basic_ostream_wchar *this, unsigned __int64 val)
6868 return basic_ostream_print_uint64(this, val, num_put_short_use_facet(
6869 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6872 static basic_ostream_wchar* basic_ostream_print_bool(basic_ostream_wchar *this, MSVCP_bool val, const num_put *numput)
6874 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(this);
6875 int state = IOSTATE_goodbit;
6877 TRACE("(%p %x)\n", this, val);
6879 if(basic_ostream_wchar_sentry_create(this)) {
6880 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
6881 ostreambuf_iterator_wchar dest = {0, strbuf};
6883 num_put_wchar_put_bool(numput, &dest, dest, &base->base, basic_ios_wchar_fill_get(base), val);
6885 basic_ostream_wchar_sentry_destroy(this);
6887 basic_ios_wchar_setstate(base, state);
6888 return this;
6891 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@_N@Z */
6892 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@_N@Z */
6893 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_bool, 8)
6894 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_bool(basic_ostream_wchar *this, MSVCP_bool val)
6896 return basic_ostream_print_bool(this, val, num_put_wchar_use_facet(
6897 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6900 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@_N@Z */
6901 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@_N@Z */
6902 DEFINE_THISCALL_WRAPPER(basic_ostream_short_print_bool, 8)
6903 basic_ostream_wchar* __thiscall basic_ostream_short_print_bool(basic_ostream_wchar *this, MSVCP_bool val)
6905 return basic_ostream_print_bool(this, val, num_put_short_use_facet(
6906 basic_ios_wchar_rdbuf_get(basic_ostream_wchar_get_basic_ios(this))->loc));
6909 /* ?endl@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AAV21@@Z */
6910 /* ?endl@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@AEAV21@@Z */
6911 /* ?endl@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@1@AAV21@@Z */
6912 /* ?endl@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@1@AEAV21@@Z */
6913 basic_ostream_wchar* __cdecl basic_ostream_wchar_endl(basic_ostream_wchar *ostr)
6915 TRACE("(%p)\n", ostr);
6917 basic_ostream_wchar_put(ostr, '\n');
6918 basic_ostream_wchar_flush(ostr);
6919 return ostr;
6922 /* ??$?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 */
6923 /* ??$?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 */
6924 /* ??$?6GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@ABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
6925 /* ??$?6GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@AEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
6926 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_bstr(basic_ostream_wchar *ostr, const basic_string_wchar *str)
6928 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
6929 IOSB_iostate state = IOSTATE_goodbit;
6931 TRACE("(%p %p)\n", ostr, str);
6933 if(basic_ostream_wchar_sentry_create(ostr)) {
6934 MSVCP_size_t len = MSVCP_basic_string_wchar_length(str);
6935 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
6937 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6938 for(; pad!=0; pad--) {
6939 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6940 state = IOSTATE_badbit;
6941 break;
6946 if(state == IOSTATE_goodbit) {
6947 if(basic_streambuf_wchar_sputn(base->strbuf, MSVCP_basic_string_wchar_c_str(str), len) != len)
6948 state = IOSTATE_badbit;
6951 if(state == IOSTATE_goodbit) {
6952 for(; pad!=0; pad--) {
6953 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6954 state = IOSTATE_badbit;
6955 break;
6960 base->base.wide = 0;
6961 }else {
6962 state = IOSTATE_badbit;
6964 basic_ostream_wchar_sentry_destroy(ostr);
6966 basic_ios_wchar_setstate(base, state);
6967 return ostr;
6970 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@_W@Z */
6971 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@_W@Z */
6972 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@G@Z */
6973 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@G@Z */
6974 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_ch(basic_ostream_wchar *ostr, wchar_t ch)
6976 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
6977 IOSB_iostate state = IOSTATE_goodbit;
6979 TRACE("(%p %d)\n", ostr, ch);
6981 if(basic_ostream_wchar_sentry_create(ostr)) {
6982 streamsize pad = (base->base.wide>1 ? base->base.wide-1 : 0);
6984 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
6985 for(; pad!=0; pad--) {
6986 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
6987 state = IOSTATE_badbit;
6988 break;
6993 if(state == IOSTATE_goodbit) {
6994 if(basic_streambuf_wchar_sputc(base->strbuf, ch) == WEOF)
6995 state = IOSTATE_badbit;
6998 if(state == IOSTATE_goodbit) {
6999 for(; pad!=0; pad--) {
7000 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7001 state = IOSTATE_badbit;
7002 break;
7007 base->base.wide = 0;
7008 }else {
7009 state = IOSTATE_badbit;
7011 basic_ostream_wchar_sentry_destroy(ostr);
7013 basic_ios_wchar_setstate(base, state);
7014 return ostr;
7017 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AAV10@PB_W@Z */
7018 /* ??$?6_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_ostream@_WU?$char_traits@_W@std@@@0@AEAV10@PEB_W@Z */
7019 /* ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@PBG@Z */
7020 /* ??$?6GU?$char_traits@G@std@@@std@@YAAEAV?$basic_ostream@GU?$char_traits@G@std@@@0@AEAV10@PEBG@Z */
7021 basic_ostream_wchar* __cdecl basic_ostream_wchar_print_str(basic_ostream_wchar *ostr, const wchar_t *str)
7023 basic_ios_wchar *base = basic_ostream_wchar_get_basic_ios(ostr);
7024 IOSB_iostate state = IOSTATE_goodbit;
7026 TRACE("(%p %s)\n", ostr, debugstr_w(str));
7028 if(basic_ostream_wchar_sentry_create(ostr)) {
7029 MSVCP_size_t len = wcslen(str);
7030 streamsize pad = (base->base.wide>len ? base->base.wide-len : 0);
7032 if((base->base.fmtfl & FMTFLAG_adjustfield) != FMTFLAG_left) {
7033 for(; pad!=0; pad--) {
7034 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7035 state = IOSTATE_badbit;
7036 break;
7041 if(state == IOSTATE_goodbit) {
7042 if(basic_streambuf_wchar_sputn(base->strbuf, str, len) != len)
7043 state = IOSTATE_badbit;
7046 if(state == IOSTATE_goodbit) {
7047 for(; pad!=0; pad--) {
7048 if(basic_streambuf_wchar_sputc(base->strbuf, base->fillch) == WEOF) {
7049 state = IOSTATE_badbit;
7050 break;
7055 base->base.wide = 0;
7056 }else {
7057 state = IOSTATE_badbit;
7059 basic_ostream_wchar_sentry_destroy(ostr);
7061 basic_ios_wchar_setstate(base, state);
7062 return ostr;
7065 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
7066 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
7067 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
7068 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
7069 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func, 8)
7070 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func(basic_ostream_wchar *this,
7071 basic_ostream_wchar* (__cdecl *pfunc)(basic_ostream_wchar*))
7073 TRACE("(%p %p)\n", this, pfunc);
7074 pfunc(this);
7075 return this;
7078 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AAV21@@Z@Z */
7079 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AEAV21@@Z@Z */
7080 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
7081 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
7082 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func_basic_ios, 8)
7083 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func_basic_ios(basic_ostream_wchar *this,
7084 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
7086 TRACE("(%p %p)\n", this, pfunc);
7087 pfunc(basic_ostream_wchar_get_basic_ios(this));
7088 return this;
7091 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
7092 /* ??6?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
7093 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
7094 /* ??6?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
7095 DEFINE_THISCALL_WRAPPER(basic_ostream_wchar_print_func_ios_base, 8)
7096 basic_ostream_wchar* __thiscall basic_ostream_wchar_print_func_ios_base(
7097 basic_ostream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
7099 TRACE("(%p %p)\n", this, pfunc);
7100 pfunc(&basic_ostream_wchar_get_basic_ios(this)->base);
7101 return this;
7104 /* Caution: basic_istream uses virtual inheritance. */
7105 static inline basic_ios_char* basic_istream_char_get_basic_ios(basic_istream_char *this)
7107 return (basic_ios_char*)((char*)this+this->vbtable[1]);
7110 static inline basic_ios_char* basic_istream_char_to_basic_ios(basic_istream_char *ptr)
7112 return (basic_ios_char*)((char*)ptr+basic_istream_char_vbtable[1]);
7115 static inline basic_istream_char* basic_istream_char_from_basic_ios(basic_ios_char *ptr)
7117 return (basic_istream_char*)((char*)ptr-basic_istream_char_vbtable[1]);
7120 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
7121 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */
7122 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_init, 20)
7123 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)
7125 basic_ios_char *base;
7127 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
7129 if(virt_init) {
7130 this->vbtable = basic_istream_char_vbtable;
7131 base = basic_istream_char_get_basic_ios(this);
7132 basic_ios_char_ctor(base);
7133 }else {
7134 base = basic_istream_char_get_basic_ios(this);
7137 base->base.vtable = &MSVCP_basic_istream_char_vtable;
7138 this->count = 0;
7139 if(!noinit)
7140 basic_ios_char_init(base, strbuf, isstd);
7141 return this;
7144 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
7145 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */
7146 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor, 16)
7147 basic_istream_char* __thiscall basic_istream_char_ctor(basic_istream_char *this, basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
7149 return basic_istream_char_ctor_init(this, strbuf, isstd, FALSE, virt_init);
7152 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */
7153 /* ??0?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
7154 DEFINE_THISCALL_WRAPPER(basic_istream_char_ctor_uninitialized, 12)
7155 basic_istream_char* __thiscall basic_istream_char_ctor_uninitialized(basic_istream_char *this, int uninitialized, MSVCP_bool virt_init)
7157 basic_ios_char *base;
7159 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
7161 if(virt_init) {
7162 this->vbtable = basic_istream_char_vbtable;
7163 base = basic_istream_char_get_basic_ios(this);
7164 basic_ios_char_ctor(base);
7165 }else {
7166 base = basic_istream_char_get_basic_ios(this);
7169 base->base.vtable = &MSVCP_basic_istream_char_vtable;
7170 ios_base_Addstd(&base->base);
7171 return this;
7174 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UAE@XZ */
7175 /* ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
7176 DEFINE_THISCALL_WRAPPER(basic_istream_char_dtor, 4)
7177 void __thiscall basic_istream_char_dtor(basic_ios_char *base)
7179 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
7181 /* don't destroy virtual base here */
7182 TRACE("(%p)\n", this);
7185 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
7186 /* ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
7187 DEFINE_THISCALL_WRAPPER(basic_istream_char_vbase_dtor, 4)
7188 void __thiscall basic_istream_char_vbase_dtor(basic_istream_char *this)
7190 TRACE("(%p)\n", this);
7191 basic_istream_char_dtor(basic_istream_char_to_basic_ios(this));
7192 basic_ios_char_dtor(basic_istream_char_get_basic_ios(this));
7195 DEFINE_THISCALL_WRAPPER(MSVCP_basic_istream_char_vector_dtor, 8)
7196 basic_istream_char* __thiscall MSVCP_basic_istream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
7198 basic_istream_char *this = basic_istream_char_from_basic_ios(base);
7200 TRACE("(%p %x)\n", this, flags);
7202 if(flags & 2) {
7203 /* we have an array, with the number of elements stored before the first object */
7204 int i, *ptr = (int *)this-1;
7206 for(i=*ptr-1; i>=0; i--)
7207 basic_istream_char_vbase_dtor(this+i);
7208 MSVCRT_operator_delete(ptr);
7209 } else {
7210 basic_istream_char_vbase_dtor(this);
7211 if(flags & 1)
7212 MSVCRT_operator_delete(this);
7215 return this;
7218 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
7219 /* ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
7220 DEFINE_THISCALL_WRAPPER(basic_istream_char__Ipfx, 8)
7221 MSVCP_bool __thiscall basic_istream_char__Ipfx(basic_istream_char *this, MSVCP_bool noskip)
7223 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7225 TRACE("(%p %d)\n", this, noskip);
7227 if(!ios_base_good(&base->base)) {
7228 basic_ios_char_setstate(base, IOSTATE_failbit);
7229 return FALSE;
7232 if(basic_ios_char_tie_get(base))
7233 basic_ostream_char_flush(basic_ios_char_tie_get(base));
7235 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
7236 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7237 const ctype_char *ctype = ctype_char_use_facet(base->strbuf->loc);
7238 int ch;
7240 for(ch = basic_streambuf_char_sgetc(strbuf); ;
7241 ch = basic_streambuf_char_snextc(strbuf)) {
7242 if(ch == EOF) {
7243 basic_ios_char_setstate(base, IOSTATE_eofbit);
7244 return FALSE;
7247 if(!ctype_char_is_ch(ctype, _SPACE|_BLANK, ch))
7248 break;
7252 return TRUE;
7255 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z */
7256 /* ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z */
7257 DEFINE_THISCALL_WRAPPER(basic_istream_char_ipfx, 8)
7258 MSVCP_bool __thiscall basic_istream_char_ipfx(basic_istream_char *this, MSVCP_bool noskip)
7260 return basic_istream_char__Ipfx(this, noskip);
7263 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEXXZ */
7264 /* ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
7265 DEFINE_THISCALL_WRAPPER(basic_istream_char_isfx, 4)
7266 void __thiscall basic_istream_char_isfx(basic_istream_char *this)
7268 TRACE("(%p)\n", this);
7271 static BOOL basic_istream_char_sentry_create(basic_istream_char *istr, MSVCP_bool noskip)
7273 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
7275 if(basic_ios_char_rdbuf_get(base))
7276 call_basic_streambuf_char__Lock(base->strbuf);
7278 return basic_istream_char_ipfx(istr, noskip);
7281 static void basic_istream_char_sentry_destroy(basic_istream_char *istr)
7283 basic_ios_char *base = basic_istream_char_get_basic_ios(istr);
7285 if(basic_ios_char_rdbuf_get(base))
7286 call_basic_streambuf_char__Unlock(base->strbuf);
7289 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QBEHXZ */
7290 /* ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QEBA_JXZ */
7291 DEFINE_THISCALL_WRAPPER(basic_istream_char_gcount, 4)
7292 int __thiscall basic_istream_char_gcount(const basic_istream_char *this)
7294 TRACE("(%p)\n", this);
7295 return this->count;
7298 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
7299 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
7300 DEFINE_THISCALL_WRAPPER(basic_istream_char_get, 4)
7301 int __thiscall basic_istream_char_get(basic_istream_char *this)
7303 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7304 int ret;
7306 TRACE("(%p)\n", this);
7308 this->count = 0;
7310 if(!basic_istream_char_sentry_create(this, TRUE)) {
7311 basic_istream_char_sentry_destroy(this);
7312 return EOF;
7315 ret = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(base));
7316 basic_istream_char_sentry_destroy(this);
7317 if(ret == EOF)
7318 basic_ios_char_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
7319 else
7320 this->count++;
7322 return ret;
7325 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAD@Z */
7326 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAD@Z */
7327 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_ch, 8)
7328 basic_istream_char* __thiscall basic_istream_char_get_ch(basic_istream_char *this, char *ch)
7330 int ret;
7332 TRACE("(%p %p)\n", this, ch);
7334 ret = basic_istream_char_get(this);
7335 if(ret != EOF)
7336 *ch = (char)ret;
7337 return this;
7340 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
7341 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
7342 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str_delim, 20)
7343 basic_istream_char* __thiscall basic_istream_char_get_str_delim(basic_istream_char *this, char *str, streamsize count, char delim)
7345 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7346 int ch = delim;
7348 TRACE("(%p %p %s %c)\n", this, str, wine_dbgstr_longlong(count), delim);
7350 this->count = 0;
7352 if(basic_istream_char_sentry_create(this, TRUE)) {
7353 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7355 for(ch = basic_streambuf_char_sgetc(strbuf); count>1;
7356 ch = basic_streambuf_char_snextc(strbuf)) {
7357 if(ch==EOF || ch==delim)
7358 break;
7360 *str++ = ch;
7361 this->count++;
7362 count--;
7365 basic_istream_char_sentry_destroy(this);
7367 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
7368 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7369 if(count > 0)
7370 *str = 0;
7371 return this;
7374 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
7375 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
7376 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_str, 16)
7377 basic_istream_char* __thiscall basic_istream_char_get_str(basic_istream_char *this, char *str, streamsize count)
7379 return basic_istream_char_get_str_delim(this, str, count, '\n');
7382 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
7383 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@D@Z */
7384 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf_delim, 12)
7385 basic_istream_char* __thiscall basic_istream_char_get_streambuf_delim(basic_istream_char *this, basic_streambuf_char *strbuf, char delim)
7387 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7388 int ch = delim;
7390 TRACE("(%p %p %c)\n", this, strbuf, delim);
7392 this->count = 0;
7394 if(basic_istream_char_sentry_create(this, TRUE)) {
7395 basic_streambuf_char *strbuf_read = basic_ios_char_rdbuf_get(base);
7397 for(ch = basic_streambuf_char_sgetc(strbuf_read); ;
7398 ch = basic_streambuf_char_snextc(strbuf_read)) {
7399 if(ch==EOF || ch==delim)
7400 break;
7402 if(basic_streambuf_char_sputc(strbuf, ch) == EOF)
7403 break;
7404 this->count++;
7407 basic_istream_char_sentry_destroy(this);
7409 basic_ios_char_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
7410 (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
7411 return this;
7414 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
7415 /* ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z */
7416 DEFINE_THISCALL_WRAPPER(basic_istream_char_get_streambuf, 8)
7417 basic_istream_char* __thiscall basic_istream_char_get_streambuf(basic_istream_char *this, basic_streambuf_char *strbuf)
7419 return basic_istream_char_get_streambuf_delim(this, strbuf, '\n');
7422 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADHD@Z */
7423 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_JD@Z */
7424 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline_delim, 20)
7425 basic_istream_char* __thiscall basic_istream_char_getline_delim(basic_istream_char *this, char *str, streamsize count, char delim)
7427 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7428 int ch = delim;
7430 TRACE("(%p %p %s %c)\n", this, str, wine_dbgstr_longlong(count), delim);
7432 this->count = 0;
7434 if(basic_istream_char_sentry_create(this, TRUE) && count>0) {
7435 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7437 while(count > 1) {
7438 ch = basic_streambuf_char_sbumpc(strbuf);
7440 if(ch==EOF || ch==delim)
7441 break;
7443 *str++ = ch;
7444 this->count++;
7445 count--;
7448 if(ch == delim)
7449 this->count++;
7450 else if(ch != EOF) {
7451 ch = basic_streambuf_char_sgetc(strbuf);
7453 if(ch == delim) {
7454 basic_streambuf_char__Gninc(strbuf);
7455 this->count++;
7459 basic_istream_char_sentry_destroy(this);
7461 basic_ios_char_setstate(base, (ch==EOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
7462 (!this->count || (ch!=delim && ch!=EOF) ? IOSTATE_failbit : IOSTATE_goodbit));
7463 if(count > 0)
7464 *str = 0;
7465 return this;
7468 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
7469 /* ?getline@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
7470 DEFINE_THISCALL_WRAPPER(basic_istream_char_getline, 16)
7471 basic_istream_char* __thiscall basic_istream_char_getline(basic_istream_char *this, char *str, streamsize count)
7473 return basic_istream_char_getline_delim(this, str, count, '\n');
7476 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@HH@Z */
7477 /* ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
7478 DEFINE_THISCALL_WRAPPER(basic_istream_char_ignore, 16)
7479 basic_istream_char* __thiscall basic_istream_char_ignore(basic_istream_char *this, streamsize count, int delim)
7481 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7482 int ch = delim;
7484 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(count), delim);
7486 this->count = 0;
7488 if(basic_istream_char_sentry_create(this, TRUE)) {
7489 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7491 while(count > 0) {
7492 ch = basic_streambuf_char_sbumpc(strbuf);
7494 if(ch==EOF || ch==delim)
7495 break;
7497 this->count++;
7498 if(count != INT_MAX)
7499 count--;
7502 basic_istream_char_sentry_destroy(this);
7504 if(ch == EOF)
7505 basic_ios_char_setstate(base, IOSTATE_eofbit);
7506 return this;
7509 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
7510 /* ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
7511 DEFINE_THISCALL_WRAPPER(basic_istream_char_peek, 4)
7512 int __thiscall basic_istream_char_peek(basic_istream_char *this)
7514 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7515 int ret = EOF;
7517 TRACE("(%p)\n", this);
7519 this->count = 0;
7521 if(basic_istream_char_sentry_create(this, TRUE))
7522 ret = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
7523 basic_istream_char_sentry_destroy(this);
7524 return ret;
7527 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADIH@Z */
7528 /* ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_K_J@Z */
7529 DEFINE_THISCALL_WRAPPER(basic_istream_char__Read_s, 20)
7530 basic_istream_char* __thiscall basic_istream_char__Read_s(basic_istream_char *this, char *str, MSVCP_size_t size, streamsize count)
7532 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7533 IOSB_iostate state = IOSTATE_goodbit;
7535 TRACE("(%p %p %lu %s)\n", this, str, size, wine_dbgstr_longlong(count));
7537 if(basic_istream_char_sentry_create(this, TRUE)) {
7538 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7540 this->count = basic_streambuf_char__Sgetn_s(strbuf, str, size, count);
7541 if(this->count != count)
7542 state |= IOSTATE_failbit | IOSTATE_eofbit;
7543 }else {
7544 this->count = 0;
7546 basic_istream_char_sentry_destroy(this);
7548 basic_ios_char_setstate(base, state);
7549 return this;
7552 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PADH@Z */
7553 /* ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z */
7554 DEFINE_THISCALL_WRAPPER(basic_istream_char_read, 16)
7555 basic_istream_char* __thiscall basic_istream_char_read(basic_istream_char *this, char *str, streamsize count)
7557 return basic_istream_char__Read_s(this, str, count, count);
7560 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */
7561 /* ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */
7562 DEFINE_THISCALL_WRAPPER(basic_istream_char__Readsome_s, 20)
7563 streamsize __thiscall basic_istream_char__Readsome_s(basic_istream_char *this, char *str, MSVCP_size_t size, streamsize count)
7565 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7566 IOSB_iostate state = IOSTATE_goodbit;
7568 TRACE("(%p %p %lu %s)\n", this, str, size, wine_dbgstr_longlong(count));
7570 this->count = 0;
7572 if(basic_istream_char_sentry_create(this, TRUE)) {
7573 streamsize avail = basic_streambuf_char_in_avail(basic_ios_char_rdbuf_get(base));
7574 if(avail > count)
7575 avail = count;
7577 if(avail == -1)
7578 state |= IOSTATE_eofbit;
7579 else if(avail > 0)
7580 basic_istream_char__Read_s(this, str, size, avail);
7581 }else {
7582 state |= IOSTATE_failbit;
7584 basic_istream_char_sentry_destroy(this);
7586 basic_ios_char_setstate(base, state);
7587 return this->count;
7590 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */
7591 /* ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */
7592 DEFINE_THISCALL_WRAPPER(basic_istream_char_readsome, 16)
7593 streamsize __thiscall basic_istream_char_readsome(basic_istream_char *this, char *str, streamsize count)
7595 return basic_istream_char__Readsome_s(this, str, count, count);
7598 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z */
7599 /* ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z */
7600 DEFINE_THISCALL_WRAPPER(basic_istream_char_putback, 8)
7601 basic_istream_char* __thiscall basic_istream_char_putback(basic_istream_char *this, char ch)
7603 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7604 IOSB_iostate state = IOSTATE_goodbit;
7606 TRACE("(%p %c)\n", this, ch);
7608 this->count = 0;
7610 if(basic_istream_char_sentry_create(this, TRUE)) {
7611 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7613 if(!ios_base_good(&base->base))
7614 state |= IOSTATE_failbit;
7615 else if(!strbuf || basic_streambuf_char_sputbackc(strbuf, ch)==EOF)
7616 state |= IOSTATE_badbit;
7618 basic_istream_char_sentry_destroy(this);
7620 basic_ios_char_setstate(base, state);
7621 return this;
7624 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ */
7625 /* ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ */
7626 DEFINE_THISCALL_WRAPPER(basic_istream_char_unget, 4)
7627 basic_istream_char* __thiscall basic_istream_char_unget(basic_istream_char *this)
7629 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7630 IOSB_iostate state = IOSTATE_goodbit;
7632 TRACE("(%p)\n", this);
7634 this->count = 0;
7636 if(basic_istream_char_sentry_create(this, TRUE)) {
7637 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7639 if(!ios_base_good(&base->base))
7640 state |= IOSTATE_failbit;
7641 else if(!strbuf || basic_streambuf_char_sungetc(strbuf)==EOF)
7642 state |= IOSTATE_badbit;
7644 basic_istream_char_sentry_destroy(this);
7646 basic_ios_char_setstate(base, state);
7647 return this;
7650 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ */
7651 /* ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ */
7652 DEFINE_THISCALL_WRAPPER(basic_istream_char_sync, 4)
7653 int __thiscall basic_istream_char_sync(basic_istream_char *this)
7655 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7656 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7658 TRACE("(%p)\n", this);
7660 if(!strbuf)
7661 return -1;
7663 if(basic_istream_char_sentry_create(this, TRUE)) {
7664 if(basic_streambuf_char_pubsync(strbuf) != -1) {
7665 basic_istream_char_sentry_destroy(this);
7666 return 0;
7669 basic_istream_char_sentry_destroy(this);
7671 basic_ios_char_setstate(base, IOSTATE_badbit);
7672 return -1;
7675 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
7676 /* ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
7677 DEFINE_THISCALL_WRAPPER(basic_istream_char_tellg, 8)
7678 fpos_int* __thiscall basic_istream_char_tellg(basic_istream_char *this, fpos_int *ret)
7680 TRACE("(%p %p)\n", this, ret);
7682 if(basic_istream_char_sentry_create(this, TRUE)) {
7683 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7684 if(!ios_base_fail(&base->base)) {
7685 basic_streambuf_char_pubseekoff(basic_ios_char_rdbuf_get(base),
7686 ret, 0, SEEKDIR_cur, OPENMODE_in);
7687 basic_istream_char_sentry_destroy(this);
7689 if(ret->off==0 && ret->pos==-1 && ret->state==0)
7690 basic_ios_char_setstate(base, IOSTATE_failbit);
7691 return ret;
7694 basic_istream_char_sentry_destroy(this);
7696 ret->off = 0;
7697 ret->pos = -1;
7698 ret->state = 0;
7699 return ret;
7702 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z */
7703 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z */
7704 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg, 16)
7705 basic_istream_char* __thiscall basic_istream_char_seekg(basic_istream_char *this, streamoff off, int dir)
7707 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7709 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), dir);
7711 if(basic_istream_char_sentry_create(this, TRUE)) {
7712 if(!ios_base_fail(&base->base)) {
7713 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7714 fpos_int ret;
7716 basic_streambuf_char_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
7717 basic_istream_char_sentry_destroy(this);
7719 if(ret.off==0 && ret.pos==-1 && ret.state==0)
7720 basic_ios_char_setstate(base, IOSTATE_failbit);
7721 else
7722 basic_ios_char_clear(base, IOSTATE_goodbit);
7723 return this;
7726 basic_istream_char_sentry_destroy(this);
7728 basic_ios_char_setstate(base, IOSTATE_failbit);
7729 return this;
7732 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
7733 /* ?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
7734 DEFINE_THISCALL_WRAPPER(basic_istream_char_seekg_fpos, 28)
7735 basic_istream_char* __thiscall basic_istream_char_seekg_fpos(basic_istream_char *this, fpos_int pos)
7737 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7739 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
7741 if(basic_istream_char_sentry_create(this, TRUE)) {
7742 if(!ios_base_fail(&base->base)) {
7743 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7744 fpos_int ret;
7746 basic_streambuf_char_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
7747 basic_istream_char_sentry_destroy(this);
7749 if(ret.off==0 && ret.pos==-1 && ret.state==0)
7750 basic_ios_char_setstate(base, IOSTATE_failbit);
7751 else
7752 basic_ios_char_clear(base, IOSTATE_goodbit);
7753 return this;
7756 basic_istream_char_sentry_destroy(this);
7758 basic_ios_char_setstate(base, IOSTATE_failbit);
7759 return this;
7762 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAF@Z */
7763 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAF@Z */
7764 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_short, 8)
7765 basic_istream_char* __thiscall basic_istream_char_read_short(basic_istream_char *this, short *v)
7767 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7768 int state = IOSTATE_goodbit;
7770 TRACE("(%p %p)\n", this, v);
7772 if(basic_istream_char_sentry_create(this, FALSE)) {
7773 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7774 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7775 istreambuf_iterator_char first={0}, last={0};
7776 LONG tmp;
7778 first.strbuf = strbuf;
7779 num_get_char_get_long(numget, &last, first, last, &base->base, &state, &tmp);
7781 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
7782 *v = tmp;
7783 else
7784 state |= IOSTATE_failbit;
7786 basic_istream_char_sentry_destroy(this);
7788 basic_ios_char_setstate(base, state);
7789 return this;
7792 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAG@Z */
7793 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAG@Z */
7794 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ushort, 8)
7795 basic_istream_char* __thiscall basic_istream_char_read_ushort(basic_istream_char *this, unsigned short *v)
7797 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7798 int state = IOSTATE_goodbit;
7800 TRACE("(%p %p)\n", this, v);
7802 if(basic_istream_char_sentry_create(this, FALSE)) {
7803 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7804 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7805 istreambuf_iterator_char first={0}, last={0};
7807 first.strbuf = strbuf;
7808 num_get_char_get_ushort(numget, &last, first, last, &base->base, &state, v);
7810 basic_istream_char_sentry_destroy(this);
7812 basic_ios_char_setstate(base, state);
7813 return this;
7816 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAH@Z */
7817 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAH@Z */
7818 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int, 8)
7819 basic_istream_char* __thiscall basic_istream_char_read_int(basic_istream_char *this, int *v)
7821 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7822 int state = IOSTATE_goodbit;
7824 TRACE("(%p %p)\n", this, v);
7826 if(basic_istream_char_sentry_create(this, FALSE)) {
7827 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7828 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7829 istreambuf_iterator_char first={0}, last={0};
7831 first.strbuf = strbuf;
7832 num_get_char_get_long(numget, &last, first, last, &base->base, &state, v);
7834 basic_istream_char_sentry_destroy(this);
7836 basic_ios_char_setstate(base, state);
7837 return this;
7840 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAI@Z */
7841 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAI@Z */
7842 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint, 8)
7843 basic_istream_char* __thiscall basic_istream_char_read_uint(basic_istream_char *this, unsigned int *v)
7845 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7846 int state = IOSTATE_goodbit;
7848 TRACE("(%p %p)\n", this, v);
7850 if(basic_istream_char_sentry_create(this, FALSE)) {
7851 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7852 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7853 istreambuf_iterator_char first={0}, last={0};
7855 first.strbuf = strbuf;
7856 num_get_char_get_uint(numget, &last, first, last, &base->base, &state, v);
7858 basic_istream_char_sentry_destroy(this);
7860 basic_ios_char_setstate(base, state);
7861 return this;
7864 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAJ@Z */
7865 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAJ@Z */
7866 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_long, 8)
7867 basic_istream_char* __thiscall basic_istream_char_read_long(basic_istream_char *this, LONG *v)
7869 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7870 int state = IOSTATE_goodbit;
7872 TRACE("(%p %p)\n", this, v);
7874 if(basic_istream_char_sentry_create(this, FALSE)) {
7875 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7876 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7877 istreambuf_iterator_char first={0}, last={0};
7879 first.strbuf = strbuf;
7880 num_get_char_get_long(numget, &last, first, last, &base->base, &state, v);
7882 basic_istream_char_sentry_destroy(this);
7884 basic_ios_char_setstate(base, state);
7885 return this;
7888 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAK@Z */
7889 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAK@Z */
7890 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ulong, 8)
7891 basic_istream_char* __thiscall basic_istream_char_read_ulong(basic_istream_char *this, ULONG *v)
7893 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7894 int state = IOSTATE_goodbit;
7896 TRACE("(%p %p)\n", this, v);
7898 if(basic_istream_char_sentry_create(this, FALSE)) {
7899 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7900 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7901 istreambuf_iterator_char first={0}, last={0};
7903 first.strbuf = strbuf;
7904 num_get_char_get_ulong(numget, &last, first, last, &base->base, &state, v);
7906 basic_istream_char_sentry_destroy(this);
7908 basic_ios_char_setstate(base, state);
7909 return this;
7912 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAM@Z */
7913 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAM@Z */
7914 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_float, 8)
7915 basic_istream_char* __thiscall basic_istream_char_read_float(basic_istream_char *this, float *v)
7917 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7918 int state = IOSTATE_goodbit;
7920 TRACE("(%p %p)\n", this, v);
7922 if(basic_istream_char_sentry_create(this, FALSE)) {
7923 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7924 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7925 istreambuf_iterator_char first={0}, last={0};
7927 first.strbuf = strbuf;
7928 num_get_char_get_float(numget, &last, first, last, &base->base, &state, v);
7930 basic_istream_char_sentry_destroy(this);
7932 basic_ios_char_setstate(base, state);
7933 return this;
7936 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAN@Z */
7937 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAN@Z */
7938 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_double, 8)
7939 basic_istream_char* __thiscall basic_istream_char_read_double(basic_istream_char *this, double *v)
7941 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7942 int state = IOSTATE_goodbit;
7944 TRACE("(%p %p)\n", this, v);
7946 if(basic_istream_char_sentry_create(this, FALSE)) {
7947 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7948 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7949 istreambuf_iterator_char first={0}, last={0};
7951 first.strbuf = strbuf;
7952 num_get_char_get_double(numget, &last, first, last, &base->base, &state, v);
7954 basic_istream_char_sentry_destroy(this);
7956 basic_ios_char_setstate(base, state);
7957 return this;
7960 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAO@Z */
7961 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAO@Z */
7962 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ldouble, 8)
7963 basic_istream_char* __thiscall basic_istream_char_read_ldouble(basic_istream_char *this, double *v)
7965 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7966 int state = IOSTATE_goodbit;
7968 TRACE("(%p %p)\n", this, v);
7970 if(basic_istream_char_sentry_create(this, FALSE)) {
7971 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7972 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7973 istreambuf_iterator_char first={0}, last={0};
7975 first.strbuf = strbuf;
7976 num_get_char_get_ldouble(numget, &last, first, last, &base->base, &state, v);
7978 basic_istream_char_sentry_destroy(this);
7980 basic_ios_char_setstate(base, state);
7981 return this;
7984 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AAPAX@Z */
7985 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
7986 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_ptr, 8)
7987 basic_istream_char* __thiscall basic_istream_char_read_ptr(basic_istream_char *this, void **v)
7989 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
7990 int state = IOSTATE_goodbit;
7992 TRACE("(%p %p)\n", this, v);
7994 if(basic_istream_char_sentry_create(this, FALSE)) {
7995 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
7996 const num_get *numget = num_get_char_use_facet(strbuf->loc);
7997 istreambuf_iterator_char first={0}, last={0};
7999 first.strbuf = strbuf;
8000 num_get_char_get_void(numget, &last, first, last, &base->base, &state, v);
8002 basic_istream_char_sentry_destroy(this);
8004 basic_ios_char_setstate(base, state);
8005 return this;
8008 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_J@Z */
8009 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_J@Z */
8010 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_int64, 8)
8011 basic_istream_char* __thiscall basic_istream_char_read_int64(basic_istream_char *this, __int64 *v)
8013 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8014 int state = IOSTATE_goodbit;
8016 TRACE("(%p %p)\n", this, v);
8018 if(basic_istream_char_sentry_create(this, FALSE)) {
8019 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8020 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8021 istreambuf_iterator_char first={0}, last={0};
8023 first.strbuf = strbuf;
8024 num_get_char_get_int64(numget, &last, first, last, &base->base, &state, v);
8026 basic_istream_char_sentry_destroy(this);
8028 basic_ios_char_setstate(base, state);
8029 return this;
8032 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_K@Z */
8033 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_K@Z */
8034 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_uint64, 8)
8035 basic_istream_char* __thiscall basic_istream_char_read_uint64(basic_istream_char *this, unsigned __int64 *v)
8037 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8038 int state = IOSTATE_goodbit;
8040 TRACE("(%p %p)\n", this, v);
8042 if(basic_istream_char_sentry_create(this, FALSE)) {
8043 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8044 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8045 istreambuf_iterator_char first={0}, last={0};
8047 first.strbuf = strbuf;
8048 num_get_char_get_uint64(numget, &last, first, last, &base->base, &state, v);
8050 basic_istream_char_sentry_destroy(this);
8052 basic_ios_char_setstate(base, state);
8053 return this;
8056 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@AA_N@Z */
8057 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@AEA_N@Z */
8058 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_bool, 8)
8059 basic_istream_char* __thiscall basic_istream_char_read_bool(basic_istream_char *this, MSVCP_bool *v)
8061 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8062 int state = IOSTATE_goodbit;
8064 TRACE("(%p %p)\n", this, v);
8066 if(basic_istream_char_sentry_create(this, FALSE)) {
8067 basic_streambuf_char *strbuf = basic_ios_char_rdbuf_get(base);
8068 const num_get *numget = num_get_char_use_facet(strbuf->loc);
8069 istreambuf_iterator_char first={0}, last={0};
8071 first.strbuf = strbuf;
8072 num_get_char_get_bool(numget, &last, first, last, &base->base, &state, v);
8074 basic_istream_char_sentry_destroy(this);
8076 basic_ios_char_setstate(base, state);
8077 return this;
8080 /* ??$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 */
8081 /* ??$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 */
8082 basic_istream_char* __cdecl basic_istream_char_getline_bstr_delim(
8083 basic_istream_char *istream, basic_string_char *str, char delim)
8085 IOSB_iostate state = IOSTATE_failbit;
8086 int c = delim;
8088 TRACE("(%p %p %c)\n", istream, str, delim);
8090 if(basic_istream_char_sentry_create(istream, TRUE)) {
8091 MSVCP_basic_string_char_clear(str);
8093 for(c = basic_istream_char_get(istream); c!=delim && c!=EOF;
8094 c = basic_istream_char_get(istream)) {
8095 state = IOSTATE_goodbit;
8096 MSVCP_basic_string_char_append_ch(str, c);
8099 basic_istream_char_sentry_destroy(istream);
8101 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream),
8102 state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8103 return istream;
8106 /* ??$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 */
8107 /* ??$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 */
8108 basic_istream_char* __cdecl basic_istream_char_getline_bstr(
8109 basic_istream_char *istream, basic_string_char *str)
8111 return basic_istream_char_getline_bstr_delim(istream, str, '\n');
8114 /* ??$?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 */
8115 /* ??$?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 */
8116 basic_istream_char* __cdecl basic_istream_char_read_bstr(
8117 basic_istream_char *istream, basic_string_char *str)
8119 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
8120 IOSB_iostate state = IOSTATE_failbit;
8121 int c = '\n';
8123 TRACE("(%p %p)\n", istream, str);
8125 if(basic_istream_char_sentry_create(istream, FALSE)) {
8126 const ctype_char *ctype = ctype_char_use_facet(base->strbuf->loc);
8127 MSVCP_size_t count = ios_base_width_get(&base->base);
8129 if(!count)
8130 count = -1;
8132 MSVCP_basic_string_char_clear(str);
8134 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
8135 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
8136 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
8137 state = IOSTATE_goodbit;
8138 MSVCP_basic_string_char_append_ch(str, c);
8141 basic_istream_char_sentry_destroy(istream);
8143 ios_base_width_set(&base->base, 0);
8144 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8145 return istream;
8148 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAD@Z */
8149 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAD@Z */
8150 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAC@Z */
8151 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAC@Z */
8152 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@PAE@Z */
8153 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@PEAE@Z */
8154 basic_istream_char* __cdecl basic_istream_char_read_str(basic_istream_char *istream, char *str)
8156 basic_ios_char *base = basic_istream_char_get_basic_ios(istream);
8157 IOSB_iostate state = IOSTATE_failbit;
8158 int c = '\n';
8160 TRACE("(%p %p)\n", istream, str);
8162 if(basic_istream_char_sentry_create(istream, FALSE)) {
8163 const ctype_char *ctype = ctype_char_use_facet(base->strbuf->loc);
8164 MSVCP_size_t count = ios_base_width_get(&base->base)-1;
8166 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base));
8167 c!=EOF && !ctype_char_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
8168 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base)), count--) {
8169 state = IOSTATE_goodbit;
8170 *str++ = c;
8173 basic_istream_char_sentry_destroy(istream);
8175 *str = 0;
8176 ios_base_width_set(&base->base, 0);
8177 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8178 return istream;
8181 /* ??$?5DU?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAD@Z */
8182 /* ??$?5DU?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAD@Z */
8183 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAC@Z */
8184 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAC@Z */
8185 /* ??$?5U?$char_traits@D@std@@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAE@Z */
8186 /* ??$?5U?$char_traits@D@std@@@std@@YAAEAV?$basic_istream@DU?$char_traits@D@std@@@0@AEAV10@AEAE@Z */
8187 basic_istream_char* __cdecl basic_istream_char_read_ch(basic_istream_char *istream, char *ch)
8189 IOSB_iostate state = IOSTATE_failbit;
8190 int c = 0;
8192 TRACE("(%p %p)\n", istream, ch);
8194 if(basic_istream_char_sentry_create(istream, FALSE)) {
8195 c = basic_streambuf_char_sbumpc(basic_ios_char_rdbuf_get(
8196 basic_istream_char_get_basic_ios(istream)));
8197 if(c != EOF) {
8198 state = IOSTATE_goodbit;
8199 *ch = c;
8202 basic_istream_char_sentry_destroy(istream);
8204 basic_ios_char_setstate(basic_istream_char_get_basic_ios(istream),
8205 state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8206 return istream;
8209 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
8210 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
8211 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_streambuf, 8)
8212 basic_istream_char* __thiscall basic_istream_char_read_streambuf(
8213 basic_istream_char *this, basic_streambuf_char *streambuf)
8215 basic_ios_char *base = basic_istream_char_get_basic_ios(this);
8216 IOSB_iostate state = IOSTATE_failbit;
8217 int c = '\n';
8219 TRACE("(%p %p)\n", this, streambuf);
8221 if(basic_istream_char_sentry_create(this, FALSE)) {
8222 for(c = basic_streambuf_char_sgetc(basic_ios_char_rdbuf_get(base)); c!=EOF;
8223 c = basic_streambuf_char_snextc(basic_ios_char_rdbuf_get(base))) {
8224 state = IOSTATE_goodbit;
8225 if(basic_streambuf_char_sputc(streambuf, c) == EOF)
8226 break;
8229 basic_istream_char_sentry_destroy(this);
8231 basic_ios_char_setstate(base, state | (c==EOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8232 return this;
8235 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
8236 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
8237 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func, 8)
8238 basic_istream_char* __thiscall basic_istream_char_read_func(basic_istream_char *this,
8239 basic_istream_char* (__cdecl *pfunc)(basic_istream_char*))
8241 TRACE("(%p %p)\n", this, pfunc);
8242 pfunc(this);
8243 return this;
8246 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@DU?$char_traits@D@std@@@1@AAV21@@Z@Z */
8247 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@DU?$char_traits@D@std@@@1@AEAV21@@Z@Z */
8248 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_basic_ios, 8)
8249 basic_istream_char* __thiscall basic_istream_char_read_func_basic_ios(basic_istream_char *this,
8250 basic_ios_char* (__cdecl *pfunc)(basic_ios_char*))
8252 TRACE("(%p %p)\n", this, pfunc);
8253 pfunc(basic_istream_char_get_basic_ios(this));
8254 return this;
8257 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
8258 /* ??5?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
8259 DEFINE_THISCALL_WRAPPER(basic_istream_char_read_func_ios_base, 8)
8260 basic_istream_char* __thiscall basic_istream_char_read_func_ios_base(basic_istream_char *this,
8261 ios_base* (__cdecl *pfunc)(ios_base*))
8263 TRACE("(%p %p)\n", this, pfunc);
8264 pfunc(&basic_istream_char_get_basic_ios(this)->base);
8265 return this;
8268 /* Caution: basic_istream uses virtual inheritance. */
8269 static inline basic_ios_wchar* basic_istream_wchar_get_basic_ios(basic_istream_wchar *this)
8271 return (basic_ios_wchar*)((char*)this+this->vbtable[1]);
8274 static inline basic_ios_wchar* basic_istream_wchar_to_basic_ios(basic_istream_wchar *ptr)
8276 return (basic_ios_wchar*)((char*)ptr+basic_istream_wchar_vbtable[1]);
8279 static inline basic_istream_wchar* basic_istream_wchar_from_basic_ios(basic_ios_wchar *ptr)
8281 return (basic_istream_wchar*)((char*)ptr-basic_istream_wchar_vbtable[1]);
8284 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */
8285 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */
8286 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_init, 20)
8287 basic_istream_wchar* __thiscall basic_istream_wchar_ctor_init(basic_istream_wchar *this,
8288 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool noinit, MSVCP_bool virt_init)
8290 basic_ios_wchar *base;
8292 TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init);
8294 if(virt_init) {
8295 this->vbtable = basic_istream_wchar_vbtable;
8296 base = basic_istream_wchar_get_basic_ios(this);
8297 basic_ios_wchar_ctor(base);
8298 }else {
8299 base = basic_istream_wchar_get_basic_ios(this);
8302 base->base.vtable = &MSVCP_basic_istream_wchar_vtable;
8303 this->count = 0;
8304 if(!noinit)
8305 basic_ios_wchar_init(base, strbuf, isstd);
8306 return this;
8309 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
8310 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */
8311 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_init, 20)
8312 basic_istream_wchar* __thiscall basic_istream_short_ctor_init(basic_istream_wchar *this,
8313 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool noinit, MSVCP_bool virt_init)
8315 basic_istream_wchar_ctor_init(this, strbuf, isstd, noinit, virt_init);
8316 basic_istream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_istream_short_vtable;
8317 return this;
8320 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
8321 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */
8322 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor, 16)
8323 basic_istream_wchar* __thiscall basic_istream_wchar_ctor(basic_istream_wchar *this,
8324 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
8326 return basic_istream_wchar_ctor_init(this, strbuf, isstd, FALSE, virt_init);
8329 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
8330 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */
8331 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor, 16)
8332 basic_istream_wchar* __thiscall basic_istream_short_ctor(basic_istream_wchar *this,
8333 basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init)
8335 return basic_istream_short_ctor_init(this, strbuf, isstd, FALSE, virt_init);
8338 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */
8339 /* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
8340 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_uninitialized, 12)
8341 basic_istream_wchar* __thiscall basic_istream_wchar_ctor_uninitialized(
8342 basic_istream_wchar *this, int uninitialized, MSVCP_bool virt_init)
8344 basic_ios_wchar *base;
8346 TRACE("(%p %d %d)\n", this, uninitialized, virt_init);
8348 if(virt_init) {
8349 this->vbtable = basic_istream_wchar_vbtable;
8350 base = basic_istream_wchar_get_basic_ios(this);
8351 basic_ios_wchar_ctor(base);
8352 }else {
8353 base = basic_istream_wchar_get_basic_ios(this);
8356 base->base.vtable = &MSVCP_basic_istream_wchar_vtable;
8357 ios_base_Addstd(&base->base);
8358 return this;
8361 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */
8362 /* ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */
8363 DEFINE_THISCALL_WRAPPER(basic_istream_short_ctor_uninitialized, 12)
8364 basic_istream_wchar* __thiscall basic_istream_short_ctor_uninitialized(
8365 basic_istream_wchar *this, int uninitialized, MSVCP_bool virt_init)
8367 basic_istream_wchar_ctor_uninitialized(this, uninitialized, virt_init);
8368 basic_istream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_istream_short_vtable;
8369 return this;
8372 /* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
8373 /* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
8374 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UAE@XZ */
8375 /* ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
8376 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_dtor, 4)
8377 void __thiscall basic_istream_wchar_dtor(basic_ios_wchar *base)
8379 basic_istream_wchar *this = basic_istream_wchar_from_basic_ios(base);
8381 /* don't destroy virtual base here */
8382 TRACE("(%p)\n", this);
8385 /* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
8386 /* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
8387 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
8388 /* ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
8389 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_vbase_dtor, 4)
8390 void __thiscall basic_istream_wchar_vbase_dtor(basic_istream_wchar *this)
8392 TRACE("(%p)\n", this);
8393 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(this));
8394 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(this));
8397 DEFINE_THISCALL_WRAPPER(MSVCP_basic_istream_wchar_vector_dtor, 8)
8398 basic_istream_wchar* __thiscall MSVCP_basic_istream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
8400 basic_istream_wchar *this = basic_istream_wchar_from_basic_ios(base);
8402 TRACE("(%p %x)\n", this, flags);
8404 if(flags & 2) {
8405 /* we have an array, with the number of elements stored before the first object */
8406 int i, *ptr = (int *)this-1;
8408 for(i=*ptr-1; i>=0; i--)
8409 basic_istream_wchar_vbase_dtor(this+i);
8410 MSVCRT_operator_delete(ptr);
8411 } else {
8412 basic_istream_wchar_vbase_dtor(this);
8413 if(flags & 1)
8414 MSVCRT_operator_delete(this);
8417 return this;
8420 DEFINE_THISCALL_WRAPPER(MSVCP_basic_istream_short_vector_dtor, 8)
8421 basic_istream_wchar* __thiscall MSVCP_basic_istream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
8423 return MSVCP_basic_istream_wchar_vector_dtor(base, flags);
8426 /* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */
8427 /* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */
8428 /* ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
8429 /* ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
8430 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Ipfx, 8)
8431 MSVCP_bool __thiscall basic_istream_wchar__Ipfx(basic_istream_wchar *this, MSVCP_bool noskip)
8433 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8435 TRACE("(%p %d)\n", this, noskip);
8437 if(!ios_base_good(&base->base)) {
8438 basic_ios_wchar_setstate(base, IOSTATE_failbit);
8439 return FALSE;
8442 if(basic_ios_wchar_tie_get(base))
8443 basic_ostream_wchar_flush(basic_ios_wchar_tie_get(base));
8445 if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) {
8446 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8447 const ctype_wchar *ctype = ctype_wchar_use_facet(base->strbuf->loc);
8448 int ch;
8450 for(ch = basic_streambuf_wchar_sgetc(strbuf); ;
8451 ch = basic_streambuf_wchar_snextc(strbuf)) {
8452 if(ch == WEOF) {
8453 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
8454 return FALSE;
8457 if(!ctype_wchar_is_ch(ctype, _SPACE|_BLANK, ch))
8458 break;
8462 return TRUE;
8465 /* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */
8466 /* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */
8467 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z */
8468 /* ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z */
8469 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ipfx, 8)
8470 MSVCP_bool __thiscall basic_istream_wchar_ipfx(basic_istream_wchar *this, MSVCP_bool noskip)
8472 return basic_istream_wchar__Ipfx(this, noskip);
8475 /* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
8476 /* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
8477 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ */
8478 /* ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
8479 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_isfx, 4)
8480 void __thiscall basic_istream_wchar_isfx(basic_istream_wchar *this)
8482 TRACE("(%p)\n", this);
8485 static BOOL basic_istream_wchar_sentry_create(basic_istream_wchar *istr, MSVCP_bool noskip)
8487 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr);
8489 if(basic_ios_wchar_rdbuf_get(base))
8490 basic_streambuf_wchar__Lock(base->strbuf);
8492 return basic_istream_wchar_ipfx(istr, noskip);
8495 static void basic_istream_wchar_sentry_destroy(basic_istream_wchar *istr)
8497 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr);
8499 if(basic_ios_wchar_rdbuf_get(base))
8500 basic_streambuf_wchar__Unlock(base->strbuf);
8503 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBEHXZ */
8504 /* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEBA_JXZ */
8505 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBEHXZ */
8506 /* ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QEBA_JXZ */
8507 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_gcount, 4)
8508 int __thiscall basic_istream_wchar_gcount(const basic_istream_wchar *this)
8510 TRACE("(%p)\n", this);
8511 return this->count;
8514 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
8515 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
8516 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
8517 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
8518 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get, 4)
8519 unsigned short __thiscall basic_istream_wchar_get(basic_istream_wchar *this)
8521 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8522 int ret;
8524 TRACE("(%p)\n", this);
8526 this->count = 0;
8528 if(!basic_istream_wchar_sentry_create(this, TRUE)) {
8529 basic_istream_wchar_sentry_destroy(this);
8530 return WEOF;
8533 ret = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(base));
8534 basic_istream_wchar_sentry_destroy(this);
8535 if(ret == WEOF)
8536 basic_ios_wchar_setstate(base, IOSTATE_eofbit|IOSTATE_failbit);
8537 else
8538 this->count++;
8540 return ret;
8543 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AA_W@Z */
8544 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEA_W@Z */
8545 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAG@Z */
8546 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAG@Z */
8547 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_ch, 8)
8548 basic_istream_wchar* __thiscall basic_istream_wchar_get_ch(basic_istream_wchar *this, wchar_t *ch)
8550 unsigned short ret;
8552 TRACE("(%p %p)\n", this, ch);
8554 ret = basic_istream_wchar_get(this);
8555 if(ret != WEOF)
8556 *ch = (wchar_t)ret;
8557 return this;
8560 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */
8561 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */
8562 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
8563 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
8564 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str_delim, 20)
8565 basic_istream_wchar* __thiscall basic_istream_wchar_get_str_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
8567 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8568 unsigned short ch = delim;
8570 TRACE("(%p %p %s %c)\n", this, str, wine_dbgstr_longlong(count), delim);
8572 this->count = 0;
8574 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8575 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8577 for(ch = basic_streambuf_wchar_sgetc(strbuf); count>1;
8578 ch = basic_streambuf_wchar_snextc(strbuf)) {
8579 if(ch==WEOF || ch==delim)
8580 break;
8582 *str++ = ch;
8583 this->count++;
8584 count--;
8587 basic_istream_wchar_sentry_destroy(this);
8589 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
8590 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8591 if(count > 0)
8592 *str = 0;
8593 return this;
8596 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
8597 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
8598 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
8599 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
8600 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str, 16)
8601 basic_istream_wchar* __thiscall basic_istream_wchar_get_str(basic_istream_wchar *this, wchar_t *str, streamsize count)
8603 return basic_istream_wchar_get_str_delim(this, str, count, '\n');
8606 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */
8607 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */
8608 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
8609 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@G@Z */
8610 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf_delim, 12)
8611 basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf_delim(basic_istream_wchar *this, basic_streambuf_wchar *strbuf, wchar_t delim)
8613 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8614 unsigned short ch = delim;
8616 TRACE("(%p %p %c)\n", this, strbuf, delim);
8618 this->count = 0;
8620 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8621 basic_streambuf_wchar *strbuf_read = basic_ios_wchar_rdbuf_get(base);
8623 for(ch = basic_streambuf_wchar_sgetc(strbuf_read); ;
8624 ch = basic_streambuf_wchar_snextc(strbuf_read)) {
8625 if(ch==WEOF || ch==delim)
8626 break;
8628 if(basic_streambuf_wchar_sputc(strbuf, ch) == WEOF)
8629 break;
8630 this->count++;
8633 basic_istream_wchar_sentry_destroy(this);
8635 basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) |
8636 (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
8637 return this;
8640 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */
8641 /* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */
8642 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@AAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
8643 /* ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@GU?$char_traits@G@std@@@2@@Z */
8644 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf, 8)
8645 basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf(basic_istream_wchar *this, basic_streambuf_wchar *strbuf)
8647 return basic_istream_wchar_get_streambuf_delim(this, strbuf, '\n');
8650 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */
8651 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */
8652 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z */
8653 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z */
8654 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline_delim, 20)
8655 basic_istream_wchar* __thiscall basic_istream_wchar_getline_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim)
8657 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8658 unsigned short ch = delim;
8660 TRACE("(%p %p %s %c)\n", this, str, wine_dbgstr_longlong(count), delim);
8662 this->count = 0;
8664 if(basic_istream_wchar_sentry_create(this, TRUE) && count>0) {
8665 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8667 while(count > 1) {
8668 ch = basic_streambuf_wchar_sbumpc(strbuf);
8670 if(ch==WEOF || ch==delim)
8671 break;
8673 *str++ = ch;
8674 this->count++;
8675 count--;
8678 if(ch == delim)
8679 this->count++;
8680 else if(ch != WEOF) {
8681 ch = basic_streambuf_wchar_sgetc(strbuf);
8683 if(ch == delim) {
8684 basic_streambuf_wchar__Gninc(strbuf);
8685 this->count++;
8689 basic_istream_wchar_sentry_destroy(this);
8691 basic_ios_wchar_setstate(base, (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit) |
8692 (!this->count || (ch!=delim && ch!=WEOF) ? IOSTATE_failbit : IOSTATE_goodbit));
8693 if(count > 0)
8694 *str = 0;
8695 return this;
8698 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
8699 /* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
8700 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
8701 /* ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
8702 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline, 16)
8703 basic_istream_wchar* __thiscall basic_istream_wchar_getline(basic_istream_wchar *this, wchar_t *str, streamsize count)
8705 return basic_istream_wchar_getline_delim(this, str, count, '\n');
8708 /* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@HG@Z */
8709 /* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JG@Z */
8710 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@HG@Z */
8711 /* ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JG@Z */
8712 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ignore, 16)
8713 basic_istream_wchar* __thiscall basic_istream_wchar_ignore(basic_istream_wchar *this, streamsize count, unsigned short delim)
8715 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8716 unsigned short ch = delim;
8718 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(count), delim);
8720 this->count = 0;
8722 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8723 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8725 while(count > 0) {
8726 ch = basic_streambuf_wchar_sbumpc(strbuf);
8728 if(ch==WEOF || ch==delim)
8729 break;
8731 this->count++;
8732 if(count != INT_MAX)
8733 count--;
8736 basic_istream_wchar_sentry_destroy(this);
8738 if(ch == WEOF)
8739 basic_ios_wchar_setstate(base, IOSTATE_eofbit);
8740 return this;
8743 /* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */
8744 /* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */
8745 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ */
8746 /* ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ */
8747 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_peek, 4)
8748 unsigned short __thiscall basic_istream_wchar_peek(basic_istream_wchar *this)
8750 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8751 unsigned short ret = WEOF;
8753 TRACE("(%p)\n", this);
8755 this->count = 0;
8757 if(basic_istream_wchar_sentry_create(this, TRUE))
8758 ret = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
8759 basic_istream_wchar_sentry_destroy(this);
8760 return ret;
8763 /* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WIH@Z */
8764 /* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_K_J@Z */
8765 /* ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGIH@Z */
8766 /* ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_K_J@Z */
8767 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Read_s, 20)
8768 basic_istream_wchar* __thiscall basic_istream_wchar__Read_s(basic_istream_wchar *this, wchar_t *str, MSVCP_size_t size, streamsize count)
8770 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8771 IOSB_iostate state = IOSTATE_goodbit;
8773 TRACE("(%p %p %lu %s)\n", this, str, size, wine_dbgstr_longlong(count));
8775 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8776 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8778 this->count = basic_streambuf_wchar__Sgetn_s(strbuf, str, size, count);
8779 if(this->count != count)
8780 state |= IOSTATE_failbit | IOSTATE_eofbit;
8781 }else {
8782 this->count = 0;
8784 basic_istream_wchar_sentry_destroy(this);
8786 basic_ios_wchar_setstate(base, state);
8787 return this;
8790 /* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */
8791 /* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */
8792 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z */
8793 /* ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z */
8794 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read, 16)
8795 basic_istream_wchar* __thiscall basic_istream_wchar_read(basic_istream_wchar *this, wchar_t *str, streamsize count)
8797 return basic_istream_wchar__Read_s(this, str, count, count);
8800 /* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */
8801 /* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */
8802 /* ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z */
8803 /* ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z */
8804 DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Readsome_s, 20)
8805 streamsize __thiscall basic_istream_wchar__Readsome_s(basic_istream_wchar *this, wchar_t *str, MSVCP_size_t size, streamsize count)
8807 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8808 IOSB_iostate state = IOSTATE_goodbit;
8810 TRACE("(%p %p %lu %s)\n", this, str, size, wine_dbgstr_longlong(count));
8812 this->count = 0;
8814 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8815 streamsize avail = basic_streambuf_wchar_in_avail(basic_ios_wchar_rdbuf_get(base));
8816 if(avail > count)
8817 avail = count;
8819 if(avail == -1)
8820 state |= IOSTATE_eofbit;
8821 else if(avail > 0)
8822 basic_istream_wchar__Read_s(this, str, size, avail);
8823 }else {
8824 state |= IOSTATE_failbit;
8826 basic_istream_wchar_sentry_destroy(this);
8828 basic_ios_wchar_setstate(base, state);
8829 return this->count;
8832 /* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */
8833 /* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */
8834 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z */
8835 /* ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z */
8836 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_readsome, 16)
8837 streamsize __thiscall basic_istream_wchar_readsome(basic_istream_wchar *this, wchar_t *str, streamsize count)
8839 return basic_istream_wchar__Readsome_s(this, str, count, count);
8842 /* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */
8843 /* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */
8844 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z */
8845 /* ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z */
8846 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_putback, 8)
8847 basic_istream_wchar* __thiscall basic_istream_wchar_putback(basic_istream_wchar *this, wchar_t ch)
8849 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8850 IOSB_iostate state = IOSTATE_goodbit;
8852 TRACE("(%p %c)\n", this, ch);
8854 this->count = 0;
8856 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8857 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8859 if(!ios_base_good(&base->base))
8860 state |= IOSTATE_failbit;
8861 else if(!strbuf || basic_streambuf_wchar_sputbackc(strbuf, ch)==WEOF)
8862 state |= IOSTATE_badbit;
8864 basic_istream_wchar_sentry_destroy(this);
8866 basic_ios_wchar_setstate(base, state);
8867 return this;
8870 /* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */
8871 /* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */
8872 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ */
8873 /* ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ */
8874 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_unget, 4)
8875 basic_istream_wchar* __thiscall basic_istream_wchar_unget(basic_istream_wchar *this)
8877 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8878 IOSB_iostate state = IOSTATE_goodbit;
8880 TRACE("(%p)\n", this);
8882 this->count = 0;
8884 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8885 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8887 if(!ios_base_good(&base->base))
8888 state |= IOSTATE_failbit;
8889 else if(!strbuf || basic_streambuf_wchar_sungetc(strbuf)==WEOF)
8890 state |= IOSTATE_badbit;
8892 basic_istream_wchar_sentry_destroy(this);
8894 basic_ios_wchar_setstate(base, state);
8895 return this;
8898 /* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHXZ */
8899 /* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */
8900 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHXZ */
8901 /* ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAHXZ */
8902 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_sync, 4)
8903 int __thiscall basic_istream_wchar_sync(basic_istream_wchar *this)
8905 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8906 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8908 TRACE("(%p)\n", this);
8910 if(!strbuf)
8911 return -1;
8913 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8914 if(basic_streambuf_wchar_pubsync(strbuf) != -1) {
8915 basic_istream_wchar_sentry_destroy(this);
8916 return 0;
8919 basic_istream_wchar_sentry_destroy(this);
8921 basic_ios_wchar_setstate(base, IOSTATE_badbit);
8922 return -1;
8925 /* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */
8926 /* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
8927 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ */
8928 /* ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
8929 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_tellg, 8)
8930 fpos_int* __thiscall basic_istream_wchar_tellg(basic_istream_wchar *this, fpos_int *ret)
8932 TRACE("(%p %p)\n", this, ret);
8934 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8935 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8936 if(!ios_base_fail(&base->base)) {
8937 basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base),
8938 ret, 0, SEEKDIR_cur, OPENMODE_in);
8939 basic_istream_wchar_sentry_destroy(this);
8941 if(ret->off==0 && ret->pos==-1 && ret->state==0)
8942 basic_ios_wchar_setstate(base, IOSTATE_failbit);
8943 return ret;
8946 basic_istream_wchar_sentry_destroy(this);
8948 ret->off = 0;
8949 ret->pos = -1;
8950 ret->state = 0;
8951 return ret;
8954 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */
8955 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */
8956 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@JH@Z */
8957 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z */
8958 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg, 16)
8959 basic_istream_wchar* __thiscall basic_istream_wchar_seekg(basic_istream_wchar *this, streamoff off, int dir)
8961 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8963 TRACE("(%p %s %d)\n", this, wine_dbgstr_longlong(off), dir);
8965 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8966 if(!ios_base_fail(&base->base)) {
8967 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
8968 fpos_int ret;
8970 basic_streambuf_wchar_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in);
8971 basic_istream_wchar_sentry_destroy(this);
8973 if(ret.off==0 && ret.pos==-1 && ret.state==0)
8974 basic_ios_wchar_setstate(base, IOSTATE_failbit);
8975 else
8976 basic_ios_wchar_clear(base, IOSTATE_goodbit);
8977 return this;
8980 basic_istream_wchar_sentry_destroy(this);
8982 basic_ios_wchar_setstate(base, IOSTATE_failbit);
8983 return this;
8986 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
8987 /* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
8988 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */
8989 /* ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */
8990 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg_fpos, 28)
8991 basic_istream_wchar* __thiscall basic_istream_wchar_seekg_fpos(basic_istream_wchar *this, fpos_int pos)
8993 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
8995 TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos));
8997 if(basic_istream_wchar_sentry_create(this, TRUE)) {
8998 if(!ios_base_fail(&base->base)) {
8999 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9000 fpos_int ret;
9002 basic_streambuf_wchar_pubseekpos(strbuf, &ret, pos, OPENMODE_in);
9003 basic_istream_wchar_sentry_destroy(this);
9005 if(ret.off==0 && ret.pos==-1 && ret.state==0)
9006 basic_ios_wchar_setstate(base, IOSTATE_failbit);
9007 else
9008 basic_ios_wchar_clear(base, IOSTATE_goodbit);
9009 return this;
9012 basic_istream_wchar_sentry_destroy(this);
9014 basic_ios_wchar_setstate(base, IOSTATE_failbit);
9015 return this;
9018 static basic_istream_wchar* basic_istream_read_short(basic_istream_wchar *this, short *v, const num_get *numget)
9020 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9021 int state = IOSTATE_goodbit;
9023 TRACE("(%p %p)\n", this, v);
9025 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9026 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9027 istreambuf_iterator_wchar first={0}, last={0};
9028 LONG tmp;
9030 first.strbuf = strbuf;
9031 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, &tmp);
9033 if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp))
9034 *v = tmp;
9035 else
9036 state |= IOSTATE_failbit;
9038 basic_istream_wchar_sentry_destroy(this);
9040 basic_ios_wchar_setstate(base, state);
9041 return this;
9044 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAF@Z */
9045 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAF@Z */
9046 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_short, 8)
9047 basic_istream_wchar* __thiscall basic_istream_wchar_read_short(basic_istream_wchar *this, short *v)
9049 return basic_istream_read_short(this, v, num_get_wchar_use_facet(
9050 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9053 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAF@Z */
9054 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAF@Z */
9055 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_short, 8)
9056 basic_istream_wchar* __thiscall basic_istream_short_read_short(basic_istream_wchar *this, short *v)
9058 return basic_istream_read_short(this, v, num_get_short_use_facet(
9059 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9062 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAG@Z */
9063 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAG@Z */
9064 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ushort, 8)
9065 basic_istream_wchar* __thiscall basic_istream_wchar_read_ushort(basic_istream_wchar *this, unsigned short *v)
9067 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9068 int state = IOSTATE_goodbit;
9070 TRACE("(%p %p)\n", this, v);
9072 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9073 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9074 const num_get *numget = num_get_wchar_use_facet(strbuf->loc);
9075 istreambuf_iterator_wchar first={0}, last={0};
9077 first.strbuf = strbuf;
9078 num_get_wchar_get_ushort(numget, &last, first, last, &base->base, &state, v);
9080 basic_istream_wchar_sentry_destroy(this);
9082 basic_ios_wchar_setstate(base, state);
9083 return this;
9086 static basic_istream_wchar* basic_istream_read_int(basic_istream_wchar *this, int *v, const num_get *numget)
9088 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9089 int state = IOSTATE_goodbit;
9091 TRACE("(%p %p)\n", this, v);
9093 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9094 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9095 istreambuf_iterator_wchar first={0}, last={0};
9097 first.strbuf = strbuf;
9098 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v);
9100 basic_istream_wchar_sentry_destroy(this);
9102 basic_ios_wchar_setstate(base, state);
9103 return this;
9106 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAH@Z */
9107 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAH@Z */
9108 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int, 8)
9109 basic_istream_wchar* __thiscall basic_istream_wchar_read_int(basic_istream_wchar *this, int *v)
9111 return basic_istream_read_int(this, v, num_get_wchar_use_facet(
9112 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9115 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAH@Z */
9116 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAH@Z */
9117 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int, 8)
9118 basic_istream_wchar* __thiscall basic_istream_short_read_int(basic_istream_wchar *this, int *v)
9120 return basic_istream_read_int(this, v, num_get_short_use_facet(
9121 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9124 static basic_istream_wchar* basic_istream_read_uint(basic_istream_wchar *this, unsigned int *v, const num_get *numget)
9126 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9127 int state = IOSTATE_goodbit;
9129 TRACE("(%p %p)\n", this, v);
9131 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9132 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9133 istreambuf_iterator_wchar first={0}, last={0};
9135 first.strbuf = strbuf;
9136 num_get_wchar_get_uint(numget, &last, first, last, &base->base, &state, v);
9138 basic_istream_wchar_sentry_destroy(this);
9140 basic_ios_wchar_setstate(base, state);
9141 return this;
9144 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAI@Z */
9145 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAI@Z */
9146 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint, 8)
9147 basic_istream_wchar* __thiscall basic_istream_wchar_read_uint(basic_istream_wchar *this, unsigned int *v)
9149 return basic_istream_read_uint(this, v, num_get_wchar_use_facet(
9150 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9153 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAI@Z */
9154 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAI@Z */
9155 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint, 8)
9156 basic_istream_wchar* __thiscall basic_istream_short_read_uint(basic_istream_wchar *this, unsigned int *v)
9158 return basic_istream_read_uint(this, v, num_get_short_use_facet(
9159 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9162 static basic_istream_wchar* basic_istream_read_long(basic_istream_wchar *this, LONG *v, const num_get *numget)
9164 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9165 int state = IOSTATE_goodbit;
9167 TRACE("(%p %p)\n", this, v);
9169 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9170 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9171 istreambuf_iterator_wchar first={0}, last={0};
9173 first.strbuf = strbuf;
9174 num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v);
9176 basic_istream_wchar_sentry_destroy(this);
9178 basic_ios_wchar_setstate(base, state);
9179 return this;
9182 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z */
9183 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z */
9184 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_long, 8)
9185 basic_istream_wchar* __thiscall basic_istream_wchar_read_long(basic_istream_wchar *this, LONG *v)
9187 return basic_istream_read_long(this, v, num_get_wchar_use_facet(
9188 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9191 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z */
9192 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z */
9193 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_long, 8)
9194 basic_istream_wchar* __thiscall basic_istream_short_read_long(basic_istream_wchar *this, LONG *v)
9196 return basic_istream_read_long(this, v, num_get_short_use_facet(
9197 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9200 static basic_istream_wchar* basic_istream_read_ulong(basic_istream_wchar *this, ULONG *v, const num_get *numget)
9202 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9203 int state = IOSTATE_goodbit;
9205 TRACE("(%p %p)\n", this, v);
9207 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9208 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9209 istreambuf_iterator_wchar first={0}, last={0};
9211 first.strbuf = strbuf;
9212 num_get_wchar_get_ulong(numget, &last, first, last, &base->base, &state, v);
9214 basic_istream_wchar_sentry_destroy(this);
9216 basic_ios_wchar_setstate(base, state);
9217 return this;
9220 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAK@Z */
9221 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAK@Z */
9222 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ulong, 8)
9223 basic_istream_wchar* __thiscall basic_istream_wchar_read_ulong(basic_istream_wchar *this, ULONG *v)
9225 return basic_istream_read_ulong(this, v, num_get_wchar_use_facet(
9226 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9229 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAK@Z */
9230 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAK@Z */
9231 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ulong, 8)
9232 basic_istream_wchar* __thiscall basic_istream_short_read_ulong(basic_istream_wchar *this, ULONG *v)
9234 return basic_istream_read_ulong(this, v, num_get_short_use_facet(
9235 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9238 static basic_istream_wchar* basic_istream_read_float(basic_istream_wchar *this, float *v, const num_get *numget)
9240 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9241 int state = IOSTATE_goodbit;
9243 TRACE("(%p %p)\n", this, v);
9245 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9246 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9247 istreambuf_iterator_wchar first={0}, last={0};
9249 first.strbuf = strbuf;
9250 num_get_wchar_get_float(numget, &last, first, last, &base->base, &state, v);
9252 basic_istream_wchar_sentry_destroy(this);
9254 basic_ios_wchar_setstate(base, state);
9255 return this;
9258 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAM@Z */
9259 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAM@Z */
9260 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_float, 8)
9261 basic_istream_wchar* __thiscall basic_istream_wchar_read_float(basic_istream_wchar *this, float *v)
9263 return basic_istream_read_float(this, v, num_get_wchar_use_facet(
9264 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9267 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAM@Z */
9268 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAM@Z */
9269 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_float, 8)
9270 basic_istream_wchar* __thiscall basic_istream_short_read_float(basic_istream_wchar *this, float *v)
9272 return basic_istream_read_float(this, v, num_get_short_use_facet(
9273 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9276 static basic_istream_wchar* basic_istream_read_double(basic_istream_wchar *this, double *v, const num_get *numget)
9278 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9279 int state = IOSTATE_goodbit;
9281 TRACE("(%p %p)\n", this, v);
9283 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9284 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9285 istreambuf_iterator_wchar first={0}, last={0};
9287 first.strbuf = strbuf;
9288 num_get_wchar_get_double(numget, &last, first, last, &base->base, &state, v);
9290 basic_istream_wchar_sentry_destroy(this);
9292 basic_ios_wchar_setstate(base, state);
9293 return this;
9296 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAN@Z */
9297 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAN@Z */
9298 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_double, 8)
9299 basic_istream_wchar* __thiscall basic_istream_wchar_read_double(basic_istream_wchar *this, double *v)
9301 return basic_istream_read_double(this, v, num_get_wchar_use_facet(
9302 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9305 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAN@Z */
9306 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAN@Z */
9307 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_double, 8)
9308 basic_istream_wchar* __thiscall basic_istream_short_read_double(basic_istream_wchar *this, double *v)
9310 return basic_istream_read_double(this, v, num_get_short_use_facet(
9311 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9314 static basic_istream_wchar* basic_istream_read_ldouble(basic_istream_wchar *this, double *v, const num_get *numget)
9316 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9317 int state = IOSTATE_goodbit;
9319 TRACE("(%p %p)\n", this, v);
9321 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9322 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9323 istreambuf_iterator_wchar first={0}, last={0};
9325 first.strbuf = strbuf;
9326 num_get_wchar_get_ldouble(numget, &last, first, last, &base->base, &state, v);
9328 basic_istream_wchar_sentry_destroy(this);
9330 basic_ios_wchar_setstate(base, state);
9331 return this;
9334 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAO@Z */
9335 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAO@Z */
9336 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ldouble, 8)
9337 basic_istream_wchar* __thiscall basic_istream_wchar_read_ldouble(basic_istream_wchar *this, double *v)
9339 return basic_istream_read_ldouble(this, v, num_get_wchar_use_facet(
9340 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9343 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAO@Z */
9344 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAO@Z */
9345 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ldouble, 8)
9346 basic_istream_wchar* __thiscall basic_istream_short_read_ldouble(basic_istream_wchar *this, double *v)
9348 return basic_istream_read_ldouble(this, v, num_get_short_use_facet(
9349 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9352 static basic_istream_wchar* basic_istream_read_ptr(basic_istream_wchar *this, void **v, const num_get *numget)
9354 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9355 int state = IOSTATE_goodbit;
9357 TRACE("(%p %p)\n", this, v);
9359 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9360 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9361 istreambuf_iterator_wchar first={0}, last={0};
9363 first.strbuf = strbuf;
9364 num_get_wchar_get_void(numget, &last, first, last, &base->base, &state, v);
9366 basic_istream_wchar_sentry_destroy(this);
9368 basic_ios_wchar_setstate(base, state);
9369 return this;
9372 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAPAX@Z */
9373 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
9374 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ptr, 8)
9375 basic_istream_wchar* __thiscall basic_istream_wchar_read_ptr(basic_istream_wchar *this, void **v)
9377 return basic_istream_read_ptr(this, v, num_get_wchar_use_facet(
9378 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9381 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AAPAX@Z */
9382 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEAPEAX@Z */
9383 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_ptr, 8)
9384 basic_istream_wchar* __thiscall basic_istream_short_read_ptr(basic_istream_wchar *this, void **v)
9386 return basic_istream_read_ptr(this, v, num_get_short_use_facet(
9387 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9390 static basic_istream_wchar* basic_istream_read_int64(basic_istream_wchar *this, __int64 *v, const num_get *numget)
9392 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9393 int state = IOSTATE_goodbit;
9395 TRACE("(%p %p)\n", this, v);
9397 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9398 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9399 istreambuf_iterator_wchar first={0}, last={0};
9401 first.strbuf = strbuf;
9402 num_get_wchar_get_int64(numget, &last, first, last, &base->base, &state, v);
9404 basic_istream_wchar_sentry_destroy(this);
9406 basic_ios_wchar_setstate(base, state);
9407 return this;
9410 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_J@Z */
9411 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_J@Z */
9412 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int64, 8)
9413 basic_istream_wchar* __thiscall basic_istream_wchar_read_int64(basic_istream_wchar *this, __int64 *v)
9415 return basic_istream_read_int64(this, v, num_get_wchar_use_facet(
9416 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9419 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_J@Z */
9420 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_J@Z */
9421 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_int64, 8)
9422 basic_istream_wchar* __thiscall basic_istream_short_read_int64(basic_istream_wchar *this, __int64 *v)
9424 return basic_istream_read_int64(this, v, num_get_short_use_facet(
9425 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9428 static basic_istream_wchar* basic_istream_read_uint64(basic_istream_wchar *this, unsigned __int64 *v, const num_get *numget)
9430 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9431 int state = IOSTATE_goodbit;
9433 TRACE("(%p %p)\n", this, v);
9435 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9436 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9437 istreambuf_iterator_wchar first={0}, last={0};
9439 first.strbuf = strbuf;
9440 num_get_wchar_get_uint64(numget, &last, first, last, &base->base, &state, v);
9442 basic_istream_wchar_sentry_destroy(this);
9444 basic_ios_wchar_setstate(base, state);
9445 return this;
9448 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_K@Z */
9449 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_K@Z */
9450 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint64, 8)
9451 basic_istream_wchar* __thiscall basic_istream_wchar_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
9453 return basic_istream_read_uint64(this, v, num_get_wchar_use_facet(
9454 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9457 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_K@Z */
9458 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_K@Z */
9459 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_uint64, 8)
9460 basic_istream_wchar* __thiscall basic_istream_short_read_uint64(basic_istream_wchar *this, unsigned __int64 *v)
9462 return basic_istream_read_uint64(this, v, num_get_short_use_facet(
9463 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9466 static basic_istream_wchar* basic_istream_read_bool(basic_istream_wchar *this, MSVCP_bool *v, const num_get *numget)
9468 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9469 int state = IOSTATE_goodbit;
9471 TRACE("(%p %p)\n", this, v);
9473 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9474 basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base);
9475 istreambuf_iterator_wchar first={0}, last={0};
9477 first.strbuf = strbuf;
9478 num_get_wchar_get_bool(numget, &last, first, last, &base->base, &state, v);
9480 basic_istream_wchar_sentry_destroy(this);
9482 basic_ios_wchar_setstate(base, state);
9483 return this;
9486 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_N@Z */
9487 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_N@Z */
9488 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_bool, 8)
9489 basic_istream_wchar* __thiscall basic_istream_wchar_read_bool(basic_istream_wchar *this, MSVCP_bool *v)
9491 return basic_istream_read_bool(this, v, num_get_wchar_use_facet(
9492 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9495 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@AA_N@Z */
9496 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@AEA_N@Z */
9497 DEFINE_THISCALL_WRAPPER(basic_istream_short_read_bool, 8)
9498 basic_istream_wchar* __thiscall basic_istream_short_read_bool(basic_istream_wchar *this, MSVCP_bool *v)
9500 return basic_istream_read_bool(this, v, num_get_short_use_facet(
9501 basic_istream_wchar_get_basic_ios(this)->strbuf->loc));
9504 /* ??$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 */
9505 /* ??$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 */
9506 /* ??$getline@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@G@Z */
9507 /* ??$getline@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@G@Z */
9508 basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr_delim(
9509 basic_istream_wchar *istream, basic_string_wchar *str, wchar_t delim)
9511 IOSB_iostate state = IOSTATE_failbit;
9512 int c = delim;
9514 TRACE("(%p %p %c)\n", istream, str, delim);
9516 if(basic_istream_wchar_sentry_create(istream, TRUE)) {
9517 MSVCP_basic_string_wchar_clear(str);
9519 for(c = basic_istream_wchar_get(istream); c!=delim && c!=WEOF;
9520 c = basic_istream_wchar_get(istream)) {
9521 state = IOSTATE_goodbit;
9522 MSVCP_basic_string_wchar_append_ch(str, c);
9525 basic_istream_wchar_sentry_destroy(istream);
9527 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream),
9528 state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9529 return istream;
9532 /* ??$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 */
9533 /* ??$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 */
9534 /* ??$getline@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
9535 /* ??$getline@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
9536 basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr(
9537 basic_istream_wchar *istream, basic_string_wchar *str)
9539 return basic_istream_wchar_getline_bstr_delim(istream, str, '\n');
9542 static basic_istream_wchar* basic_istream_read_bstr(basic_istream_wchar *istream,
9543 basic_string_wchar *str, const ctype_wchar *ctype)
9545 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
9546 IOSB_iostate state = IOSTATE_failbit;
9547 int c = '\n';
9549 TRACE("(%p %p)\n", istream, str);
9551 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
9552 MSVCP_size_t count = ios_base_width_get(&base->base);
9554 if(!count)
9555 count = -1;
9557 MSVCP_basic_string_wchar_clear(str);
9559 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
9560 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
9561 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base)), count--) {
9562 state = IOSTATE_goodbit;
9563 MSVCP_basic_string_wchar_append_ch(str, c);
9566 basic_istream_wchar_sentry_destroy(istream);
9568 ios_base_width_set(&base->base, 0);
9569 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9570 return istream;
9573 /* ??$?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 */
9574 /* ??$?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 */
9575 basic_istream_wchar* __cdecl basic_istream_wchar_read_bstr(
9576 basic_istream_wchar *istream, basic_string_wchar *str)
9578 return basic_istream_read_bstr(istream, str, ctype_wchar_use_facet(
9579 basic_istream_wchar_get_basic_ios(istream)->strbuf->loc));
9582 /* ??$?5GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
9583 /* ??$?5GU?$char_traits@G@std@@V?$allocator@G@1@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z */
9584 basic_istream_wchar* __cdecl basic_istream_short_read_bstr(
9585 basic_istream_wchar *istream, basic_string_wchar *str)
9587 return basic_istream_read_bstr(istream, str, ctype_short_use_facet(
9588 basic_istream_wchar_get_basic_ios(istream)->strbuf->loc));
9591 basic_istream_wchar* basic_istream_read_str(basic_istream_wchar *istream, wchar_t *str, const ctype_wchar *ctype)
9593 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream);
9594 IOSB_iostate state = IOSTATE_failbit;
9595 unsigned short c = '\n';
9597 TRACE("(%p %p)\n", istream, str);
9599 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
9600 MSVCP_size_t count = ios_base_width_get(&base->base)-1;
9602 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base));
9603 c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c) && count>0;
9604 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base)), count--) {
9605 state = IOSTATE_goodbit;
9606 *str++ = c;
9609 basic_istream_wchar_sentry_destroy(istream);
9611 *str = 0;
9612 ios_base_width_set(&base->base, 0);
9613 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9614 return istream;
9617 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@PA_W@Z */
9618 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@PEA_W@Z */
9619 basic_istream_wchar* __cdecl basic_istream_wchar_read_str(basic_istream_wchar *istream, wchar_t *str)
9621 return basic_istream_read_str(istream, str, ctype_wchar_use_facet(
9622 basic_istream_wchar_get_basic_ios(istream)->strbuf->loc));
9625 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@PAG@Z */
9626 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@PEAG@Z */
9627 basic_istream_wchar* __cdecl basic_istream_short_read_str(basic_istream_wchar *istream, wchar_t *str)
9629 return basic_istream_read_str(istream, str, ctype_short_use_facet(
9630 basic_istream_wchar_get_basic_ios(istream)->strbuf->loc));
9633 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AA_W@Z */
9634 /* ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEA_W@Z */
9635 /* ??$?5GU?$char_traits@G@std@@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAG@Z */
9636 /* ??$?5GU?$char_traits@G@std@@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAG@Z */
9637 basic_istream_wchar* __cdecl basic_istream_wchar_read_ch(basic_istream_wchar *istream, wchar_t *ch)
9639 IOSB_iostate state = IOSTATE_failbit;
9640 unsigned short c = 0;
9642 TRACE("(%p %p)\n", istream, ch);
9644 if(basic_istream_wchar_sentry_create(istream, FALSE)) {
9645 c = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(
9646 basic_istream_wchar_get_basic_ios(istream)));
9647 if(c != WEOF) {
9648 state = IOSTATE_goodbit;
9649 *ch = c;
9652 basic_istream_wchar_sentry_destroy(istream);
9654 basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream),
9655 state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9656 return istream;
9659 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
9660 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
9661 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
9662 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
9663 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_streambuf, 8)
9664 basic_istream_wchar* __thiscall basic_istream_wchar_read_streambuf(
9665 basic_istream_wchar *this, basic_streambuf_wchar *streambuf)
9667 basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this);
9668 IOSB_iostate state = IOSTATE_failbit;
9669 unsigned short c = '\n';
9671 TRACE("(%p %p)\n", this, streambuf);
9673 if(basic_istream_wchar_sentry_create(this, FALSE)) {
9674 for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base)); c!=WEOF;
9675 c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base))) {
9676 state = IOSTATE_goodbit;
9677 if(basic_streambuf_wchar_sputc(streambuf, c) == WEOF)
9678 break;
9681 basic_istream_wchar_sentry_destroy(this);
9683 basic_ios_wchar_setstate(base, state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit));
9684 return this;
9687 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
9688 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
9689 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z */
9690 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z */
9691 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func, 8)
9692 basic_istream_wchar* __thiscall basic_istream_wchar_read_func(basic_istream_wchar *this,
9693 basic_istream_wchar* (__cdecl *pfunc)(basic_istream_wchar*))
9695 TRACE("(%p %p)\n", this, pfunc);
9696 pfunc(this);
9697 return this;
9700 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AAV21@@Z@Z */
9701 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AEAV21@@Z@Z */
9702 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@GU?$char_traits@G@std@@@1@AAV21@@Z@Z */
9703 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAV?$basic_ios@GU?$char_traits@G@std@@@1@AEAV21@@Z@Z */
9704 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func_basic_ios, 8)
9705 basic_istream_wchar* __thiscall basic_istream_wchar_read_func_basic_ios(basic_istream_wchar *this,
9706 basic_ios_wchar* (__cdecl *pfunc)(basic_ios_wchar*))
9708 TRACE("(%p %p)\n", this, pfunc);
9709 pfunc(basic_istream_wchar_get_basic_ios(this));
9710 return this;
9713 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
9714 /* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
9715 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@P6AAAVios_base@1@AAV21@@Z@Z */
9716 /* ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z */
9717 DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_func_ios_base, 8)
9718 basic_istream_wchar* __thiscall basic_istream_wchar_read_func_ios_base(
9719 basic_istream_wchar *this, ios_base* (__cdecl *pfunc)(ios_base*))
9721 TRACE("(%p %p)\n", this, pfunc);
9722 pfunc(&basic_istream_wchar_get_basic_ios(this)->base);
9723 return this;
9726 static inline basic_ios_char* basic_iostream_char_to_basic_ios(basic_iostream_char *ptr)
9728 return (basic_ios_char*)((char*)ptr+basic_iostream_char_vbtable1[1]);
9731 static inline basic_iostream_char* basic_iostream_char_from_basic_ios(basic_ios_char *ptr)
9733 return (basic_iostream_char*)((char*)ptr-basic_iostream_char_vbtable1[1]);
9736 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
9737 /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */
9738 DEFINE_THISCALL_WRAPPER(basic_iostream_char_ctor, 12)
9739 basic_iostream_char* __thiscall basic_iostream_char_ctor(basic_iostream_char *this, basic_streambuf_char *strbuf, MSVCP_bool virt_init)
9741 basic_ios_char *basic_ios;
9743 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
9745 if(virt_init) {
9746 this->base1.vbtable = basic_iostream_char_vbtable1;
9747 this->base2.vbtable = basic_iostream_char_vbtable2;
9748 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
9749 basic_ios_char_ctor(basic_ios);
9750 }else {
9751 basic_ios = basic_istream_char_get_basic_ios(&this->base1);
9754 basic_ios->base.vtable = &MSVCP_basic_iostream_char_vtable;
9756 basic_istream_char_ctor(&this->base1, strbuf, FALSE, FALSE);
9757 basic_ostream_char_ctor_uninitialized(&this->base2, 0, FALSE, FALSE);
9758 return this;
9761 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UAE@XZ */
9762 /* ??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
9763 DEFINE_THISCALL_WRAPPER(basic_iostream_char_dtor, 4)
9764 void __thiscall basic_iostream_char_dtor(basic_ios_char *base)
9766 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
9768 TRACE("(%p)\n", this);
9769 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base2));
9770 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base1));
9773 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QAEXXZ */
9774 /* ??_D?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
9775 DEFINE_THISCALL_WRAPPER(basic_iostream_char_vbase_dtor, 4)
9776 void __thiscall basic_iostream_char_vbase_dtor(basic_iostream_char *this)
9778 TRACE("(%p)\n", this);
9779 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(this));
9780 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base1));
9783 DEFINE_THISCALL_WRAPPER(MSVCP_basic_iostream_char_vector_dtor, 8)
9784 basic_iostream_char* __thiscall MSVCP_basic_iostream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
9786 basic_iostream_char *this = basic_iostream_char_from_basic_ios(base);
9788 TRACE("(%p %x)\n", this, flags);
9790 if(flags & 2) {
9791 /* we have an array, with the number of elements stored before the first object */
9792 int i, *ptr = (int *)this-1;
9794 for(i=*ptr-1; i>=0; i--)
9795 basic_iostream_char_vbase_dtor(this+i);
9796 MSVCRT_operator_delete(ptr);
9797 } else {
9798 basic_iostream_char_vbase_dtor(this);
9799 if(flags & 1)
9800 MSVCRT_operator_delete(this);
9803 return this;
9806 static inline basic_ios_wchar* basic_iostream_wchar_to_basic_ios(basic_iostream_wchar *ptr)
9808 return (basic_ios_wchar*)((char*)ptr+basic_iostream_wchar_vbtable1[1]);
9811 static inline basic_iostream_wchar* basic_iostream_wchar_from_basic_ios(basic_ios_wchar *ptr)
9813 return (basic_iostream_wchar*)((char*)ptr-basic_iostream_wchar_vbtable1[1]);
9816 /* ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
9817 /* ??0?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */
9818 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_ctor, 12)
9819 basic_iostream_wchar* __thiscall basic_iostream_wchar_ctor(basic_iostream_wchar *this,
9820 basic_streambuf_wchar *strbuf, MSVCP_bool virt_init)
9822 basic_ios_wchar *basic_ios;
9824 TRACE("(%p %p %d)\n", this, strbuf, virt_init);
9826 if(virt_init) {
9827 this->base1.vbtable = basic_iostream_wchar_vbtable1;
9828 this->base2.vbtable = basic_iostream_wchar_vbtable2;
9829 basic_ios = basic_istream_wchar_get_basic_ios(&this->base1);
9830 basic_ios_wchar_ctor(basic_ios);
9831 }else {
9832 basic_ios = basic_istream_wchar_get_basic_ios(&this->base1);
9835 basic_istream_wchar_ctor(&this->base1, strbuf, FALSE, FALSE);
9836 basic_ostream_wchar_ctor_uninitialized(&this->base2, 0, FALSE, FALSE);
9838 basic_ios->base.vtable = &MSVCP_basic_iostream_wchar_vtable;
9839 return this;
9842 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
9843 /* ??0?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z */
9844 DEFINE_THISCALL_WRAPPER(basic_iostream_short_ctor, 12)
9845 basic_iostream_wchar* __thiscall basic_iostream_short_ctor(basic_iostream_wchar *this,
9846 basic_streambuf_wchar *strbuf, MSVCP_bool virt_init)
9848 basic_iostream_wchar_ctor(this, strbuf, virt_init);
9849 basic_istream_wchar_get_basic_ios(&this->base1)->base.vtable = &MSVCP_basic_iostream_short_vtable;
9850 return this;
9853 /* ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
9854 /* ??1?$basic_iostream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
9855 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UAE@XZ */
9856 /* ??1?$basic_iostream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
9857 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_dtor, 4)
9858 void __thiscall basic_iostream_wchar_dtor(basic_ios_wchar *base)
9860 basic_iostream_wchar *this = basic_iostream_wchar_from_basic_ios(base);
9862 TRACE("(%p)\n", this);
9863 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base2));
9864 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base1));
9867 /* ??_D?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
9868 /* ??_D?$basic_iostream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
9869 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QAEXXZ */
9870 /* ??_D?$basic_iostream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
9871 DEFINE_THISCALL_WRAPPER(basic_iostream_wchar_vbase_dtor, 4)
9872 void __thiscall basic_iostream_wchar_vbase_dtor(basic_iostream_wchar *this)
9874 TRACE("(%p)\n", this);
9875 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(this));
9876 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base1));
9879 DEFINE_THISCALL_WRAPPER(MSVCP_basic_iostream_wchar_vector_dtor, 8)
9880 basic_iostream_wchar* __thiscall MSVCP_basic_iostream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
9882 basic_iostream_wchar *this = basic_iostream_wchar_from_basic_ios(base);
9884 TRACE("(%p %x)\n", this, flags);
9886 if(flags & 2) {
9887 /* we have an array, with the number of elements stored before the first object */
9888 int i, *ptr = (int *)this-1;
9890 for(i=*ptr-1; i>=0; i--)
9891 basic_iostream_wchar_vbase_dtor(this+i);
9892 MSVCRT_operator_delete(ptr);
9893 } else {
9894 basic_iostream_wchar_vbase_dtor(this);
9895 if(flags & 1)
9896 MSVCRT_operator_delete(this);
9899 return this;
9902 DEFINE_THISCALL_WRAPPER(MSVCP_basic_iostream_short_vector_dtor, 8)
9903 basic_iostream_wchar* __thiscall MSVCP_basic_iostream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
9905 return MSVCP_basic_iostream_wchar_vector_dtor(base, flags);
9908 static inline basic_ios_char* basic_ofstream_char_to_basic_ios(basic_ofstream_char *ptr)
9910 return (basic_ios_char*)((char*)ptr+basic_ofstream_char_vbtable[1]);
9913 static inline basic_ofstream_char* basic_ofstream_char_from_basic_ios(basic_ios_char *ptr)
9915 return (basic_ofstream_char*)((char*)ptr-basic_ofstream_char_vbtable[1]);
9918 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
9919 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
9920 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor, 8)
9921 basic_ofstream_char* __thiscall basic_ofstream_char_ctor(basic_ofstream_char *this, MSVCP_bool virt_init)
9923 basic_ios_char *basic_ios;
9925 TRACE("(%p %d)\n", this, virt_init);
9927 if(virt_init) {
9928 this->base.vbtable = basic_ofstream_char_vbtable;
9929 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9930 basic_ios_char_ctor(basic_ios);
9931 }else {
9932 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9935 basic_filebuf_char_ctor(&this->filebuf);
9936 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
9937 basic_ios->base.vtable = &MSVCP_basic_ofstream_char_vtable;
9938 return this;
9941 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
9942 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
9943 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_file, 12)
9944 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_file(
9945 basic_ofstream_char *this, FILE *file, MSVCP_bool virt_init)
9947 basic_ios_char *basic_ios;
9949 TRACE("(%p %p %d)\n", this, file, virt_init);
9951 if(virt_init) {
9952 this->base.vbtable = basic_ofstream_char_vbtable;
9953 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9954 basic_ios_char_ctor(basic_ios);
9955 }else {
9956 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9959 basic_filebuf_char_ctor_file(&this->filebuf, file);
9960 basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
9961 basic_ios->base.vtable = &MSVCP_basic_ofstream_char_vtable;
9962 return this;
9965 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
9966 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
9967 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name, 20)
9968 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name(basic_ofstream_char *this,
9969 const char *name, int mode, int prot, MSVCP_bool virt_init)
9971 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
9973 basic_ofstream_char_ctor(this, virt_init);
9975 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
9976 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9977 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
9979 return this;
9982 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
9983 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
9984 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
9985 /* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
9986 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name_wchar, 20)
9987 basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name_wchar(basic_ofstream_char *this,
9988 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
9990 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
9992 basic_ofstream_char_ctor(this, virt_init);
9994 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
9995 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
9996 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
9998 return this;
10001 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
10002 /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
10003 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_dtor, 4)
10004 void __thiscall basic_ofstream_char_dtor(basic_ios_char *base)
10006 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
10008 TRACE("(%p)\n", this);
10010 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
10011 basic_filebuf_char_dtor(&this->filebuf);
10014 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10015 /* ??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10016 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_vbase_dtor, 4)
10017 void __thiscall basic_ofstream_char_vbase_dtor(basic_ofstream_char *this)
10019 TRACE("(%p)\n", this);
10021 basic_ofstream_char_dtor(basic_ofstream_char_to_basic_ios(this));
10022 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
10025 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ofstream_char_vector_dtor, 8)
10026 basic_ofstream_char* __thiscall MSVCP_basic_ofstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
10028 basic_ofstream_char *this = basic_ofstream_char_from_basic_ios(base);
10030 TRACE("(%p %x)\n", this, flags);
10032 if(flags & 2) {
10033 /* we have an array, with the number of elements stored before the first object */
10034 int i, *ptr = (int *)this-1;
10036 for(i=*ptr-1; i>=0; i--)
10037 basic_ofstream_char_vbase_dtor(this+i);
10038 MSVCRT_operator_delete(ptr);
10039 } else {
10040 basic_ofstream_char_vbase_dtor(this);
10041 if(flags & 1)
10042 MSVCRT_operator_delete(this);
10045 return this;
10048 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10049 /* ?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10050 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_close, 4)
10051 void __thiscall basic_ofstream_char_close(basic_ofstream_char *this)
10053 TRACE("(%p)\n", this);
10055 if(!basic_filebuf_char_close(&this->filebuf)) {
10056 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10057 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10061 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
10062 /* ?is_open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
10063 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_is_open, 4)
10064 MSVCP_bool __thiscall basic_ofstream_char_is_open(const basic_ofstream_char *this)
10066 TRACE("(%p)\n", this);
10067 return basic_filebuf_char_is_open(&this->filebuf);
10070 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
10071 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
10072 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open, 16)
10073 void __thiscall basic_ofstream_char_open(basic_ofstream_char *this,
10074 const char *name, int mode, int prot)
10076 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
10078 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10079 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10080 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10084 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
10085 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
10086 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_old, 12)
10087 void __thiscall basic_ofstream_char_open_old(basic_ofstream_char *this,
10088 const char *name, unsigned int mode)
10090 basic_ofstream_char_open(this, name, mode, _SH_DENYNO);
10093 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
10094 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
10095 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
10096 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
10097 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_wchar, 16)
10098 void __thiscall basic_ofstream_char_open_wchar(basic_ofstream_char *this,
10099 const wchar_t *name, int mode, int prot)
10101 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
10103 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10104 basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base);
10105 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10109 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
10110 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
10111 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
10112 /* ?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
10113 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_open_wchar_old, 12)
10114 void __thiscall basic_ofstream_char_open_wchar_old(basic_ofstream_char *this,
10115 const wchar_t *name, unsigned int mode)
10117 basic_ofstream_char_open_wchar(this, name, mode, _SH_DENYNO);
10120 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10121 /* ?rdbuf@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10122 DEFINE_THISCALL_WRAPPER(basic_ofstream_char_rdbuf, 4)
10123 basic_filebuf_char* __thiscall basic_ofstream_char_rdbuf(const basic_ofstream_char *this)
10125 TRACE("(%p)\n", this);
10126 return (basic_filebuf_char*)&this->filebuf;
10129 static inline basic_ios_wchar* basic_ofstream_wchar_to_basic_ios(basic_ofstream_wchar *ptr)
10131 return (basic_ios_wchar*)((char*)ptr+basic_ofstream_wchar_vbtable[1]);
10134 static inline basic_ofstream_wchar* basic_ofstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
10136 return (basic_ofstream_wchar*)((char*)ptr-basic_ofstream_wchar_vbtable[1]);
10139 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
10140 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
10141 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor, 8)
10142 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor(basic_ofstream_wchar *this, MSVCP_bool virt_init)
10144 basic_ios_wchar *basic_ios;
10146 TRACE("(%p %d)\n", this, virt_init);
10148 if(virt_init) {
10149 this->base.vbtable = basic_ofstream_wchar_vbtable;
10150 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10151 basic_ios_wchar_ctor(basic_ios);
10152 }else {
10153 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10156 basic_filebuf_wchar_ctor(&this->filebuf);
10157 basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10158 basic_ios->base.vtable = &MSVCP_basic_ofstream_wchar_vtable;
10159 return this;
10162 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
10163 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
10164 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor, 8)
10165 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor(basic_ofstream_wchar *this, MSVCP_bool virt_init)
10167 basic_ofstream_wchar_ctor(this, virt_init);
10168 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
10169 return this;
10172 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
10173 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10174 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_file, 12)
10175 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_file(
10176 basic_ofstream_wchar *this, FILE *file, MSVCP_bool virt_init)
10178 basic_ios_wchar *basic_ios;
10180 TRACE("(%p %p %d)\n", this, file, virt_init);
10182 if(virt_init) {
10183 this->base.vbtable = basic_ofstream_wchar_vbtable;
10184 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10185 basic_ios_wchar_ctor(basic_ios);
10186 }else {
10187 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10190 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
10191 basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10192 basic_ios->base.vtable = &MSVCP_basic_ofstream_wchar_vtable;
10193 return this;
10196 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
10197 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10198 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_file, 12)
10199 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_file(
10200 basic_ofstream_wchar *this, FILE *file, MSVCP_bool virt_init)
10202 basic_ofstream_wchar_ctor_file(this, file, virt_init);
10203 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
10204 return this;
10207 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDHH@Z */
10208 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDHH@Z */
10209 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_name, 20)
10210 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_name(basic_ofstream_wchar *this,
10211 const char *name, int mode, int prot, MSVCP_bool virt_init)
10213 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
10215 basic_ofstream_wchar_ctor(this, virt_init);
10217 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10218 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10219 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10221 return this;
10224 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBDHH@Z */
10225 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDHH@Z */
10226 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_name, 20)
10227 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_name(basic_ofstream_wchar *this,
10228 const char *name, int mode, int prot, MSVCP_bool virt_init)
10230 basic_ofstream_wchar_ctor_name(this, name, mode, prot, virt_init);
10231 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
10232 return this;
10235 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
10236 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
10237 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
10238 /* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
10239 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_ctor_name_wchar, 20)
10240 basic_ofstream_wchar* __thiscall basic_ofstream_wchar_ctor_name_wchar(basic_ofstream_wchar *this,
10241 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
10243 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
10245 basic_ofstream_wchar_ctor(this, virt_init);
10247 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10248 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10249 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10251 return this;
10254 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
10255 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
10256 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
10257 /* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
10258 DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_name_wchar, 20)
10259 basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_name_wchar(basic_ofstream_wchar *this,
10260 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
10262 basic_ofstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
10263 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable;
10264 return this;
10267 /* ??1?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
10268 /* ??1?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
10269 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
10270 /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
10271 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_dtor, 4)
10272 void __thiscall basic_ofstream_wchar_dtor(basic_ios_wchar *base)
10274 basic_ofstream_wchar *this = basic_ofstream_wchar_from_basic_ios(base);
10276 TRACE("(%p)\n", this);
10278 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base));
10279 basic_filebuf_wchar_dtor(&this->filebuf);
10282 /* ??_D?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
10283 /* ??_D?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
10284 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10285 /* ??_D?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10286 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_vbase_dtor, 4)
10287 void __thiscall basic_ofstream_wchar_vbase_dtor(basic_ofstream_wchar *this)
10289 TRACE("(%p)\n", this);
10291 basic_ofstream_wchar_dtor(basic_ofstream_wchar_to_basic_ios(this));
10292 basic_ios_wchar_dtor(basic_ostream_wchar_get_basic_ios(&this->base));
10295 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ofstream_wchar_vector_dtor, 8)
10296 basic_ofstream_wchar* __thiscall MSVCP_basic_ofstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
10298 basic_ofstream_wchar *this = basic_ofstream_wchar_from_basic_ios(base);
10300 TRACE("(%p %x)\n", this, flags);
10302 if(flags & 2) {
10303 /* we have an array, with the number of elements stored before the first object */
10304 int i, *ptr = (int *)this-1;
10306 for(i=*ptr-1; i>=0; i--)
10307 basic_ofstream_wchar_vbase_dtor(this+i);
10308 MSVCRT_operator_delete(ptr);
10309 } else {
10310 basic_ofstream_wchar_vbase_dtor(this);
10311 if(flags & 1)
10312 MSVCRT_operator_delete(this);
10315 return this;
10318 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ofstream_short_vector_dtor, 8)
10319 basic_ofstream_wchar* __thiscall MSVCP_basic_ofstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
10321 return MSVCP_basic_ofstream_wchar_vector_dtor(base, flags);
10324 /* ?close@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
10325 /* ?close@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
10326 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10327 /* ?close@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10328 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_close, 4)
10329 void __thiscall basic_ofstream_wchar_close(basic_ofstream_wchar *this)
10331 TRACE("(%p)\n", this);
10333 if(!basic_filebuf_wchar_close(&this->filebuf)) {
10334 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10335 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10339 /* ?is_open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
10340 /* ?is_open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
10341 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
10342 /* ?is_open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
10343 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_is_open, 4)
10344 MSVCP_bool __thiscall basic_ofstream_wchar_is_open(const basic_ofstream_wchar *this)
10346 TRACE("(%p)\n", this);
10347 return basic_filebuf_wchar_is_open(&this->filebuf);
10350 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
10351 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
10352 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
10353 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
10354 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open, 16)
10355 void __thiscall basic_ofstream_wchar_open(basic_ofstream_wchar *this,
10356 const char *name, int mode, int prot)
10358 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
10360 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10361 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10362 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10366 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
10367 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
10368 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
10369 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
10370 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_old, 12)
10371 void __thiscall basic_ofstream_wchar_open_old(basic_ofstream_wchar *this,
10372 const char *name, unsigned int mode)
10374 basic_ofstream_wchar_open(this, name, mode, _SH_DENYNO);
10377 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
10378 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
10379 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
10380 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
10381 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
10382 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
10383 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
10384 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
10385 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_wchar, 16)
10386 void __thiscall basic_ofstream_wchar_open_wchar(basic_ofstream_wchar *this,
10387 const wchar_t *name, int mode, int prot)
10389 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
10391 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_out, prot)) {
10392 basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
10393 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10397 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
10398 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
10399 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
10400 /* ?open@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
10401 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
10402 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
10403 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
10404 /* ?open@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
10405 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_open_wchar_old, 12)
10406 void __thiscall basic_ofstream_wchar_open_wchar_old(basic_ofstream_wchar *this,
10407 const wchar_t *name, unsigned int mode)
10409 basic_ofstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
10412 /* ?rdbuf@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
10413 /* ?rdbuf@?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
10414 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
10415 /* ?rdbuf@?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
10416 DEFINE_THISCALL_WRAPPER(basic_ofstream_wchar_rdbuf, 4)
10417 basic_filebuf_wchar* __thiscall basic_ofstream_wchar_rdbuf(const basic_ofstream_wchar *this)
10419 TRACE("(%p)\n", this);
10420 return (basic_filebuf_wchar*)&this->filebuf;
10423 static inline basic_ios_char* basic_ifstream_char_to_basic_ios(basic_ifstream_char *ptr)
10425 return (basic_ios_char*)((char*)ptr+basic_ifstream_char_vbtable[1]);
10428 static inline basic_ifstream_char* basic_ifstream_char_from_basic_ios(basic_ios_char *ptr)
10430 return (basic_ifstream_char*)((char*)ptr-basic_ifstream_char_vbtable[1]);
10433 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
10434 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
10435 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor, 8)
10436 basic_ifstream_char* __thiscall basic_ifstream_char_ctor(basic_ifstream_char *this, MSVCP_bool virt_init)
10438 basic_ios_char *basic_ios;
10440 TRACE("(%p %d)\n", this, virt_init);
10442 if(virt_init) {
10443 this->base.vbtable = basic_ifstream_char_vbtable;
10444 basic_ios = basic_istream_char_get_basic_ios(&this->base);
10445 basic_ios_char_ctor(basic_ios);
10446 }else {
10447 basic_ios = basic_istream_char_get_basic_ios(&this->base);
10450 basic_filebuf_char_ctor(&this->filebuf);
10451 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10452 basic_ios->base.vtable = &MSVCP_basic_ifstream_char_vtable;
10453 return this;
10456 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
10457 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10458 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_file, 12)
10459 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_file(
10460 basic_ifstream_char *this, FILE *file, MSVCP_bool virt_init)
10462 basic_ios_char *basic_ios;
10464 TRACE("(%p %p %d)\n", this, file, virt_init);
10466 if(virt_init) {
10467 this->base.vbtable = basic_ifstream_char_vbtable;
10468 basic_ios = basic_istream_char_get_basic_ios(&this->base);
10469 basic_ios_char_ctor(basic_ios);
10470 }else {
10471 basic_ios = basic_istream_char_get_basic_ios(&this->base);
10474 basic_filebuf_char_ctor_file(&this->filebuf, file);
10475 basic_istream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10476 basic_ios->base.vtable = &MSVCP_basic_ifstream_char_vtable;
10477 return this;
10480 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
10481 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
10482 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name, 20)
10483 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name(basic_ifstream_char *this,
10484 const char *name, int mode, int prot, MSVCP_bool virt_init)
10486 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
10488 basic_ifstream_char_ctor(this, virt_init);
10490 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10491 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
10492 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10494 return this;
10497 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
10498 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
10499 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
10500 /* ??0?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
10501 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_ctor_name_wchar, 20)
10502 basic_ifstream_char* __thiscall basic_ifstream_char_ctor_name_wchar(basic_ifstream_char *this,
10503 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
10505 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
10507 basic_ifstream_char_ctor(this, virt_init);
10509 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10510 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
10511 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10513 return this;
10516 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
10517 /* ??1?$basic_ifstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
10518 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_dtor, 4)
10519 void __thiscall basic_ifstream_char_dtor(basic_ios_char *base)
10521 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
10523 TRACE("(%p)\n", this);
10525 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
10526 basic_filebuf_char_dtor(&this->filebuf);
10529 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10530 /* ??_D?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10531 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_vbase_dtor, 4)
10532 void __thiscall basic_ifstream_char_vbase_dtor(basic_ifstream_char *this)
10534 TRACE("(%p)\n", this);
10536 basic_ifstream_char_dtor(basic_ifstream_char_to_basic_ios(this));
10537 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base));
10540 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ifstream_char_vector_dtor, 8)
10541 basic_ifstream_char* __thiscall MSVCP_basic_ifstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
10543 basic_ifstream_char *this = basic_ifstream_char_from_basic_ios(base);
10545 TRACE("(%p %x)\n", this, flags);
10547 if(flags & 2) {
10548 /* we have an array, with the number of elements stored before the first object */
10549 int i, *ptr = (int *)this-1;
10551 for(i=*ptr-1; i>=0; i--)
10552 basic_ifstream_char_vbase_dtor(this+i);
10553 MSVCRT_operator_delete(ptr);
10554 } else {
10555 basic_ifstream_char_vbase_dtor(this);
10556 if(flags & 1)
10557 MSVCRT_operator_delete(this);
10560 return this;
10563 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
10564 /* ?close@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
10565 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_close, 4)
10566 void __thiscall basic_ifstream_char_close(basic_ifstream_char *this)
10568 TRACE("(%p)\n", this);
10570 if(!basic_filebuf_char_close(&this->filebuf)) {
10571 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
10572 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10576 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
10577 /* ?is_open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
10578 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_is_open, 4)
10579 MSVCP_bool __thiscall basic_ifstream_char_is_open(const basic_ifstream_char *this)
10581 TRACE("(%p)\n", this);
10582 return basic_filebuf_char_is_open(&this->filebuf);
10585 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
10586 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
10587 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open, 16)
10588 void __thiscall basic_ifstream_char_open(basic_ifstream_char *this,
10589 const char *name, int mode, int prot)
10591 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
10593 if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10594 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
10595 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10599 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
10600 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
10601 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_old, 12)
10602 void __thiscall basic_ifstream_char_open_old(basic_ifstream_char *this,
10603 const char *name, unsigned int mode)
10605 basic_ifstream_char_open(this, name, mode, _SH_DENYNO);
10608 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
10609 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
10610 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
10611 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
10612 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_wchar, 16)
10613 void __thiscall basic_ifstream_char_open_wchar(basic_ifstream_char *this,
10614 const wchar_t *name, int mode, int prot)
10616 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
10618 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10619 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base);
10620 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
10624 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
10625 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
10626 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
10627 /* ?open@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
10628 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_open_wchar_old, 12)
10629 void __thiscall basic_ifstream_char_open_wchar_old(basic_ifstream_char *this,
10630 const wchar_t *name, unsigned int mode)
10632 basic_ifstream_char_open_wchar(this, name, mode, _SH_DENYNO);
10635 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10636 /* ?rdbuf@?$basic_ifstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
10637 DEFINE_THISCALL_WRAPPER(basic_ifstream_char_rdbuf, 4)
10638 basic_filebuf_char* __thiscall basic_ifstream_char_rdbuf(const basic_ifstream_char *this)
10640 TRACE("(%p)\n", this);
10641 return (basic_filebuf_char*)&this->filebuf;
10644 static inline basic_ios_wchar* basic_ifstream_wchar_to_basic_ios(basic_ifstream_wchar *ptr)
10646 return (basic_ios_wchar*)((char*)ptr+basic_ifstream_wchar_vbtable[1]);
10649 static inline basic_ifstream_wchar* basic_ifstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
10651 return (basic_ifstream_wchar*)((char*)ptr-basic_ifstream_wchar_vbtable[1]);
10654 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
10655 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
10656 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor, 8)
10657 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor(basic_ifstream_wchar *this, MSVCP_bool virt_init)
10659 basic_ios_wchar *basic_ios;
10661 TRACE("(%p %d)\n", this, virt_init);
10663 if(virt_init) {
10664 this->base.vbtable = basic_ifstream_wchar_vbtable;
10665 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10666 basic_ios_wchar_ctor(basic_ios);
10667 }else {
10668 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10671 basic_filebuf_wchar_ctor(&this->filebuf);
10672 basic_istream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10673 basic_ios->base.vtable = &MSVCP_basic_ifstream_wchar_vtable;
10674 return this;
10677 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
10678 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
10679 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor, 8)
10680 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor(basic_ifstream_wchar *this, MSVCP_bool virt_init)
10682 basic_ifstream_wchar_ctor(this, virt_init);
10683 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
10684 return this;
10687 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
10688 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10689 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_file, 12)
10690 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_file(
10691 basic_ifstream_wchar *this, FILE *file, MSVCP_bool virt_init)
10693 basic_ios_wchar *basic_ios;
10695 TRACE("(%p %p %d)\n", this, file, virt_init);
10697 if(virt_init) {
10698 this->base.vbtable = basic_ifstream_wchar_vbtable;
10699 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10700 basic_ios_wchar_ctor(basic_ios);
10701 }else {
10702 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10705 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
10706 basic_istream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE);
10707 basic_ios->base.vtable = &MSVCP_basic_ifstream_wchar_vtable;
10708 return this;
10711 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
10712 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10713 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_file, 12)
10714 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_file(
10715 basic_ifstream_wchar *this, FILE *file, MSVCP_bool virt_init)
10717 basic_ifstream_wchar_ctor_file(this, file, virt_init);
10718 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
10719 return this;
10722 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBDHH@Z */
10723 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBDHH@Z */
10724 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name, 20)
10725 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name(basic_ifstream_wchar *this,
10726 const char *name, int mode, int prot, MSVCP_bool virt_init)
10728 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
10730 basic_ifstream_wchar_ctor(this, virt_init);
10732 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10733 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10734 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10736 return this;
10739 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBDHH@Z */
10740 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDHH@Z */
10741 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name, 20)
10742 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name(basic_ifstream_wchar *this,
10743 const char *name, int mode, int prot, MSVCP_bool virt_init)
10745 basic_ifstream_wchar_ctor_name(this, name, mode, prot, virt_init);
10746 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
10747 return this;
10750 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
10751 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
10752 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
10753 /* ??0?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
10754 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_ctor_name_wchar, 20)
10755 basic_ifstream_wchar* __thiscall basic_ifstream_wchar_ctor_name_wchar(basic_ifstream_wchar *this,
10756 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
10758 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
10760 basic_ifstream_wchar_ctor(this, virt_init);
10762 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10763 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10764 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10766 return this;
10769 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
10770 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
10771 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
10772 /* ??0?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
10773 DEFINE_THISCALL_WRAPPER(basic_ifstream_short_ctor_name_wchar, 20)
10774 basic_ifstream_wchar* __thiscall basic_ifstream_short_ctor_name_wchar(basic_ifstream_wchar *this,
10775 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
10777 basic_ifstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
10778 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ifstream_short_vtable;
10779 return this;
10782 /* ??1?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
10783 /* ??1?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
10784 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
10785 /* ??1?$basic_ifstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
10786 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_dtor, 4)
10787 void __thiscall basic_ifstream_wchar_dtor(basic_ios_wchar *base)
10789 basic_ifstream_wchar *this = basic_ifstream_wchar_from_basic_ios(base);
10791 TRACE("(%p)\n", this);
10793 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base));
10794 basic_filebuf_wchar_dtor(&this->filebuf);
10797 /* ??_D?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
10798 /* ??_D?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
10799 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10800 /* ??_D?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10801 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_vbase_dtor, 4)
10802 void __thiscall basic_ifstream_wchar_vbase_dtor(basic_ifstream_wchar *this)
10804 TRACE("(%p)\n", this);
10806 basic_ifstream_wchar_dtor(basic_ifstream_wchar_to_basic_ios(this));
10807 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base));
10810 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ifstream_wchar_vector_dtor, 8)
10811 basic_ifstream_wchar* __thiscall MSVCP_basic_ifstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
10813 basic_ifstream_wchar *this = basic_ifstream_wchar_from_basic_ios(base);
10815 TRACE("(%p %x)\n", this, flags);
10817 if(flags & 2) {
10818 /* we have an array, with the number of elements stored before the first object */
10819 int i, *ptr = (int *)this-1;
10821 for(i=*ptr-1; i>=0; i--)
10822 basic_ifstream_wchar_vbase_dtor(this+i);
10823 MSVCRT_operator_delete(ptr);
10824 } else {
10825 basic_ifstream_wchar_vbase_dtor(this);
10826 if(flags & 1)
10827 MSVCRT_operator_delete(this);
10830 return this;
10833 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ifstream_short_vector_dtor, 8)
10834 basic_ifstream_wchar* __thiscall MSVCP_basic_ifstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
10836 return MSVCP_basic_ifstream_wchar_vector_dtor(base, flags);
10839 /* ?close@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
10840 /* ?close@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
10841 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
10842 /* ?close@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
10843 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_close, 4)
10844 void __thiscall basic_ifstream_wchar_close(basic_ifstream_wchar *this)
10846 TRACE("(%p)\n", this);
10848 if(!basic_filebuf_wchar_close(&this->filebuf)) {
10849 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10850 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10854 /* ?is_open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
10855 /* ?is_open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
10856 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
10857 /* ?is_open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
10858 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_is_open, 4)
10859 MSVCP_bool __thiscall basic_ifstream_wchar_is_open(const basic_ifstream_wchar *this)
10861 TRACE("(%p)\n", this);
10862 return basic_filebuf_wchar_is_open(&this->filebuf);
10865 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
10866 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
10867 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
10868 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
10869 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open, 16)
10870 void __thiscall basic_ifstream_wchar_open(basic_ifstream_wchar *this,
10871 const char *name, int mode, int prot)
10873 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
10875 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10876 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10877 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10881 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
10882 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
10883 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
10884 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
10885 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_old, 12)
10886 void __thiscall basic_ifstream_wchar_open_old(basic_ifstream_wchar *this,
10887 const char *name, unsigned int mode)
10889 basic_ifstream_wchar_open(this, name, mode, _SH_DENYNO);
10892 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
10893 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
10894 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
10895 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
10896 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
10897 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
10898 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
10899 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
10900 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_wchar, 16)
10901 void __thiscall basic_ifstream_wchar_open_wchar(basic_ifstream_wchar *this,
10902 const wchar_t *name, int mode, int prot)
10904 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
10906 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode|OPENMODE_in, prot)) {
10907 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
10908 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
10912 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
10913 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
10914 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
10915 /* ?open@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
10916 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
10917 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
10918 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
10919 /* ?open@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
10920 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_open_wchar_old, 12)
10921 void __thiscall basic_ifstream_wchar_open_wchar_old(basic_ifstream_wchar *this,
10922 const wchar_t *name, unsigned int mode)
10924 basic_ifstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
10927 /* ?rdbuf@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
10928 /* ?rdbuf@?$basic_ifstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
10929 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
10930 /* ?rdbuf@?$basic_ifstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
10931 DEFINE_THISCALL_WRAPPER(basic_ifstream_wchar_rdbuf, 4)
10932 basic_filebuf_wchar* __thiscall basic_ifstream_wchar_rdbuf(const basic_ifstream_wchar *this)
10934 TRACE("(%p)\n", this);
10935 return (basic_filebuf_wchar*)&this->filebuf;
10938 static inline basic_ios_char* basic_fstream_char_to_basic_ios(basic_fstream_char *ptr)
10940 return (basic_ios_char*)((char*)ptr+basic_fstream_char_vbtable1[1]);
10943 static inline basic_fstream_char* basic_fstream_char_from_basic_ios(basic_ios_char *ptr)
10945 return (basic_fstream_char*)((char*)ptr-basic_fstream_char_vbtable1[1]);
10948 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@XZ */
10949 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@XZ */
10950 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor, 8)
10951 basic_fstream_char* __thiscall basic_fstream_char_ctor(basic_fstream_char *this, MSVCP_bool virt_init)
10953 basic_ios_char *basic_ios;
10955 TRACE("(%p %d)\n", this, virt_init);
10957 if(virt_init) {
10958 this->base.base1.vbtable = basic_fstream_char_vbtable1;
10959 this->base.base2.vbtable = basic_fstream_char_vbtable2;
10960 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10961 basic_ios_char_ctor(basic_ios);
10962 }else {
10963 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10966 basic_filebuf_char_ctor(&this->filebuf);
10967 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
10968 basic_ios->base.vtable = &MSVCP_basic_fstream_char_vtable;
10969 return this;
10972 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */
10973 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */
10974 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_file, 12)
10975 basic_fstream_char* __thiscall basic_fstream_char_ctor_file(basic_fstream_char *this,
10976 FILE *file, MSVCP_bool virt_init)
10978 basic_ios_char *basic_ios;
10980 TRACE("(%p %p %d)\n", this, file, virt_init);
10982 if(virt_init) {
10983 this->base.base1.vbtable = basic_fstream_char_vbtable1;
10984 this->base.base2.vbtable = basic_fstream_char_vbtable2;
10985 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10986 basic_ios_char_ctor(basic_ios);
10987 }else {
10988 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
10991 basic_filebuf_char_ctor_file(&this->filebuf, file);
10992 basic_iostream_char_ctor(&this->base, &this->filebuf.base, FALSE);
10993 basic_ios->base.vtable = &MSVCP_basic_fstream_char_vtable;
10994 return this;
10997 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBDHH@Z */
10998 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDHH@Z */
10999 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name, 20)
11000 basic_fstream_char* __thiscall basic_fstream_char_ctor_name(basic_fstream_char *this,
11001 const char *name, int mode, int prot, MSVCP_bool virt_init)
11003 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
11005 basic_fstream_char_ctor(this, virt_init);
11007 if(!basic_filebuf_char_open(&this->filebuf, name, mode, prot)) {
11008 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11009 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11011 return this;
11014 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PBGHH@Z */
11015 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEBGHH@Z */
11016 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QAE@PB_WHH@Z */
11017 /* ??0?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAA@PEB_WHH@Z */
11018 DEFINE_THISCALL_WRAPPER(basic_fstream_char_ctor_name_wchar, 20)
11019 basic_fstream_char* __thiscall basic_fstream_char_ctor_name_wchar(basic_fstream_char *this,
11020 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
11022 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
11024 basic_fstream_char_ctor(this, virt_init);
11026 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode, prot)) {
11027 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11028 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11030 return this;
11033 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UAE@XZ */
11034 /* ??1?$basic_fstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */
11035 DEFINE_THISCALL_WRAPPER(basic_fstream_char_dtor, 4)
11036 void __thiscall basic_fstream_char_dtor(basic_ios_char *base)
11038 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
11040 TRACE("(%p)\n", this);
11042 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
11043 basic_filebuf_char_dtor(&this->filebuf);
11046 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
11047 /* ??_D?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
11048 DEFINE_THISCALL_WRAPPER(basic_fstream_char_vbase_dtor, 4)
11049 void __thiscall basic_fstream_char_vbase_dtor(basic_fstream_char *this)
11051 TRACE("(%p)\n", this);
11053 basic_fstream_char_dtor(basic_fstream_char_to_basic_ios(this));
11054 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
11057 DEFINE_THISCALL_WRAPPER(MSVCP_basic_fstream_char_vector_dtor, 8)
11058 basic_fstream_char* __thiscall MSVCP_basic_fstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11060 basic_fstream_char *this = basic_fstream_char_from_basic_ios(base);
11062 TRACE("(%p %x)\n", this, flags);
11064 if(flags & 2) {
11065 /* we have an array, with the number of elements stored before the first object */
11066 int i, *ptr = (int *)this-1;
11068 for(i=*ptr-1; i>=0; i--)
11069 basic_fstream_char_vbase_dtor(this+i);
11070 MSVCRT_operator_delete(ptr);
11071 } else {
11072 basic_fstream_char_vbase_dtor(this);
11073 if(flags & 1)
11074 MSVCRT_operator_delete(this);
11077 return this;
11080 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXXZ */
11081 /* ?close@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXXZ */
11082 DEFINE_THISCALL_WRAPPER(basic_fstream_char_close, 4)
11083 void __thiscall basic_fstream_char_close(basic_fstream_char *this)
11085 TRACE("(%p)\n", this);
11087 if(!basic_filebuf_char_close(&this->filebuf)) {
11088 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11089 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11093 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBE_NXZ */
11094 /* ?is_open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBA_NXZ */
11095 DEFINE_THISCALL_WRAPPER(basic_fstream_char_is_open, 4)
11096 MSVCP_bool __thiscall basic_fstream_char_is_open(const basic_fstream_char *this)
11098 TRACE("(%p)\n", this);
11099 return basic_filebuf_char_is_open(&this->filebuf);
11102 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDHH@Z */
11103 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDHH@Z */
11104 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open, 16)
11105 void __thiscall basic_fstream_char_open(basic_fstream_char *this,
11106 const char *name, int mode, int prot)
11108 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
11110 if(!basic_filebuf_char_open(&this->filebuf, name, mode, prot)) {
11111 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11112 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11116 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDI@Z */
11117 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBDI@Z */
11118 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_old, 12)
11119 void __thiscall basic_fstream_char_open_old(basic_fstream_char *this,
11120 const char *name, unsigned int mode)
11122 basic_fstream_char_open(this, name, mode, _SH_DENYNO);
11125 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBGHH@Z */
11126 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGHH@Z */
11127 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPB_WHH@Z */
11128 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WHH@Z */
11129 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_wchar, 16)
11130 void __thiscall basic_fstream_char_open_wchar(basic_fstream_char *this,
11131 const wchar_t *name, int mode, int prot)
11133 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
11135 if(!basic_filebuf_char_open_wchar(&this->filebuf, name, mode, prot)) {
11136 basic_ios_char *basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
11137 basic_ios_char_setstate(basic_ios, IOSTATE_failbit);
11141 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBGI@Z */
11142 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEBGI@Z */
11143 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPB_WI@Z */
11144 /* ?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEAAXPEB_WI@Z */
11145 DEFINE_THISCALL_WRAPPER(basic_fstream_char_open_wchar_old, 12)
11146 void __thiscall basic_fstream_char_open_wchar_old(basic_fstream_char *this,
11147 const wchar_t *name, unsigned int mode)
11149 basic_fstream_char_open_wchar(this, name, mode, _SH_DENYNO);
11152 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
11153 /* ?rdbuf@?$basic_fstream@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_filebuf@DU?$char_traits@D@std@@@2@XZ */
11154 DEFINE_THISCALL_WRAPPER(basic_fstream_char_rdbuf, 4)
11155 basic_filebuf_char* __thiscall basic_fstream_char_rdbuf(const basic_fstream_char *this)
11157 TRACE("(%p)\n", this);
11158 return (basic_filebuf_char*)&this->filebuf;
11161 static inline basic_ios_wchar* basic_fstream_wchar_to_basic_ios(basic_fstream_wchar *ptr)
11163 return (basic_ios_wchar*)((char*)ptr+basic_fstream_wchar_vbtable1[1]);
11166 static inline basic_fstream_wchar* basic_fstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
11168 return (basic_fstream_wchar*)((char*)ptr-basic_fstream_wchar_vbtable1[1]);
11171 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@XZ */
11172 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@XZ */
11173 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor, 8)
11174 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor(basic_fstream_wchar *this, MSVCP_bool virt_init)
11176 basic_ios_wchar *basic_ios;
11178 TRACE("(%p %d)\n", this, virt_init);
11180 if(virt_init) {
11181 this->base.base1.vbtable = basic_fstream_wchar_vbtable1;
11182 this->base.base2.vbtable = basic_fstream_wchar_vbtable2;
11183 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11184 basic_ios_wchar_ctor(basic_ios);
11185 }else {
11186 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11189 basic_filebuf_wchar_ctor(&this->filebuf);
11190 basic_iostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE);
11191 basic_ios->base.vtable = &MSVCP_basic_fstream_wchar_vtable;
11192 return this;
11195 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@XZ */
11196 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@XZ */
11197 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor, 8)
11198 basic_fstream_wchar* __thiscall basic_fstream_short_ctor(basic_fstream_wchar *this, MSVCP_bool virt_init)
11200 basic_fstream_wchar_ctor(this, virt_init);
11201 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
11202 return this;
11205 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */
11206 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11207 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_file, 12)
11208 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_file(basic_fstream_wchar *this,
11209 FILE *file, MSVCP_bool virt_init)
11211 basic_ios_wchar *basic_ios;
11213 TRACE("(%p %p %d)\n", this, file, virt_init);
11215 if(virt_init) {
11216 this->base.base1.vbtable = basic_fstream_wchar_vbtable1;
11217 this->base.base2.vbtable = basic_fstream_wchar_vbtable2;
11218 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11219 basic_ios_wchar_ctor(basic_ios);
11220 }else {
11221 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11224 basic_filebuf_wchar_ctor_file(&this->filebuf, file);
11225 basic_iostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE);
11226 basic_ios->base.vtable = &MSVCP_basic_fstream_wchar_vtable;
11227 return this;
11230 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */
11231 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */
11232 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_file, 12)
11233 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_file(basic_fstream_wchar *this,
11234 FILE *file, MSVCP_bool virt_init)
11236 basic_fstream_wchar_ctor_file(this, file, virt_init);
11237 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
11238 return this;
11241 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
11242 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
11243 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name, 20)
11244 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name(basic_fstream_wchar *this,
11245 const char *name, int mode, int prot, MSVCP_bool virt_init)
11247 TRACE("(%p %s %d %d %d)\n", this, name, mode, prot, virt_init);
11249 basic_fstream_wchar_ctor(this, virt_init);
11251 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode, prot)) {
11252 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11253 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11255 return this;
11258 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
11259 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
11260 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name, 20)
11261 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name(basic_fstream_wchar *this,
11262 const char *name, int mode, int prot, MSVCP_bool virt_init)
11264 basic_fstream_wchar_ctor_name(this, name, mode, prot, virt_init);
11265 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
11266 return this;
11269 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PBGHH@Z */
11270 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEBGHH@Z */
11271 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAE@PB_WHH@Z */
11272 /* ??0?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEB_WHH@Z */
11273 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_ctor_name_wchar, 20)
11274 basic_fstream_wchar* __thiscall basic_fstream_wchar_ctor_name_wchar(basic_fstream_wchar *this,
11275 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
11277 TRACE("(%p %s %d %d %d)\n", this, debugstr_w(name), mode, prot, virt_init);
11279 basic_fstream_wchar_ctor(this, virt_init);
11281 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode, prot)) {
11282 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11283 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11285 return this;
11288 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PBGHH@Z */
11289 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEBGHH@Z */
11290 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QAE@PB_WHH@Z */
11291 /* ??0?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAA@PEB_WHH@Z */
11292 DEFINE_THISCALL_WRAPPER(basic_fstream_short_ctor_name_wchar, 20)
11293 basic_fstream_wchar* __thiscall basic_fstream_short_ctor_name_wchar(basic_fstream_wchar *this,
11294 const wchar_t *name, int mode, int prot, MSVCP_bool virt_init)
11296 basic_fstream_wchar_ctor_name_wchar(this, name, mode, prot, virt_init);
11297 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_fstream_short_vtable;
11298 return this;
11301 /* ??1?$basic_fstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */
11302 /* ??1?$basic_fstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */
11303 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UAE@XZ */
11304 /* ??1?$basic_fstream@GU?$char_traits@G@std@@@std@@UEAA@XZ */
11305 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_dtor, 4)
11306 void __thiscall basic_fstream_wchar_dtor(basic_ios_wchar *base)
11308 basic_fstream_wchar *this = basic_fstream_wchar_from_basic_ios(base);
11310 TRACE("(%p)\n", this);
11312 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(&this->base));
11313 basic_filebuf_wchar_dtor(&this->filebuf);
11316 /* ??_D?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11317 /* ??_D?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11318 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11319 /* ??_D?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11320 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_vbase_dtor, 4)
11321 void __thiscall basic_fstream_wchar_vbase_dtor(basic_fstream_wchar *this)
11323 TRACE("(%p)\n", this);
11325 basic_fstream_wchar_dtor(basic_fstream_wchar_to_basic_ios(this));
11326 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base.base1));
11329 DEFINE_THISCALL_WRAPPER(MSVCP_basic_fstream_wchar_vector_dtor, 8)
11330 basic_fstream_wchar* __thiscall MSVCP_basic_fstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11332 basic_fstream_wchar *this = basic_fstream_wchar_from_basic_ios(base);
11334 TRACE("(%p %x)\n", this, flags);
11336 if(flags & 2) {
11337 /* we have an array, with the number of elements stored before the first object */
11338 int i, *ptr = (int *)this-1;
11340 for(i=*ptr-1; i>=0; i--)
11341 basic_fstream_wchar_vbase_dtor(this+i);
11342 MSVCRT_operator_delete(ptr);
11343 } else {
11344 basic_fstream_wchar_vbase_dtor(this);
11345 if(flags & 1)
11346 MSVCRT_operator_delete(this);
11349 return this;
11352 DEFINE_THISCALL_WRAPPER(MSVCP_basic_fstream_short_vector_dtor, 8)
11353 basic_fstream_wchar* __thiscall MSVCP_basic_fstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11355 return MSVCP_basic_fstream_wchar_vector_dtor(base, flags);
11358 /* ?close@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */
11359 /* ?close@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */
11360 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXXZ */
11361 /* ?close@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXXZ */
11362 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_close, 4)
11363 void __thiscall basic_fstream_wchar_close(basic_fstream_wchar *this)
11365 TRACE("(%p)\n", this);
11367 if(!basic_filebuf_wchar_close(&this->filebuf)) {
11368 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11369 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11373 /* ?is_open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QBE_NXZ */
11374 /* ?is_open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEBA_NXZ */
11375 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBE_NXZ */
11376 /* ?is_open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBA_NXZ */
11377 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_is_open, 4)
11378 MSVCP_bool __thiscall basic_fstream_wchar_is_open(const basic_fstream_wchar *this)
11380 TRACE("(%p)\n", this);
11381 return basic_filebuf_wchar_is_open(&this->filebuf);
11384 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDHH@Z */
11385 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDHH@Z */
11386 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBDHH@Z */
11387 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDHH@Z */
11388 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open, 16)
11389 void __thiscall basic_fstream_wchar_open(basic_fstream_wchar *this,
11390 const char *name, int mode, int prot)
11392 TRACE("(%p %s %d %d)\n", this, name, mode, prot);
11394 if(!basic_filebuf_wchar_open(&this->filebuf, name, mode, prot)) {
11395 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11396 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11400 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBDI@Z */
11401 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBDI@Z */
11402 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBDI@Z */
11403 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBDI@Z */
11404 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_old, 12)
11405 void __thiscall basic_fstream_wchar_open_old(basic_fstream_wchar *this,
11406 const char *name, unsigned int mode)
11408 basic_fstream_wchar_open(this, name, mode, _SH_DENYNO);
11411 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGHH@Z */
11412 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGHH@Z */
11413 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WHH@Z */
11414 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WHH@Z */
11415 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBGHH@Z */
11416 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGHH@Z */
11417 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPB_WHH@Z */
11418 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WHH@Z */
11419 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_wchar, 16)
11420 void __thiscall basic_fstream_wchar_open_wchar(basic_fstream_wchar *this,
11421 const wchar_t *name, int mode, int prot)
11423 TRACE("(%p %s %d %d)\n", this, debugstr_w(name), mode, prot);
11425 if(!basic_filebuf_wchar_open_wchar(&this->filebuf, name, mode, prot)) {
11426 basic_ios_wchar *basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
11427 basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit);
11431 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPBGI@Z */
11432 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEBGI@Z */
11433 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QAEXPB_WI@Z */
11434 /* ?open@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEAAXPEB_WI@Z */
11435 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPBGI@Z */
11436 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEBGI@Z */
11437 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QAEXPB_WI@Z */
11438 /* ?open@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEAAXPEB_WI@Z */
11439 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_open_wchar_old, 12)
11440 void __thiscall basic_fstream_wchar_open_wchar_old(basic_fstream_wchar *this,
11441 const wchar_t *name, unsigned int mode)
11443 basic_fstream_wchar_open_wchar(this, name, mode, _SH_DENYNO);
11446 /* ?rdbuf@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
11447 /* ?rdbuf@?$basic_fstream@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_filebuf@_WU?$char_traits@_W@std@@@2@XZ */
11448 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QBEPAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
11449 /* ?rdbuf@?$basic_fstream@GU?$char_traits@G@std@@@std@@QEBAPEAV?$basic_filebuf@GU?$char_traits@G@std@@@2@XZ */
11450 DEFINE_THISCALL_WRAPPER(basic_fstream_wchar_rdbuf, 4)
11451 basic_filebuf_wchar* __thiscall basic_fstream_wchar_rdbuf(const basic_fstream_wchar *this)
11453 TRACE("(%p)\n", this);
11454 return (basic_filebuf_wchar*)&this->filebuf;
11457 static inline basic_ios_char* basic_ostringstream_char_to_basic_ios(basic_ostringstream_char *ptr)
11459 return (basic_ios_char*)((char*)ptr+basic_ostringstream_char_vbtable[1]);
11462 static inline basic_ostringstream_char* basic_ostringstream_char_from_basic_ios(basic_ios_char *ptr)
11464 return (basic_ostringstream_char*)((char*)ptr-basic_ostringstream_char_vbtable[1]);
11467 /* ??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 */
11468 /* ??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 */
11469 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_str, 16)
11470 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_str(basic_ostringstream_char *this,
11471 const basic_string_char *str, int mode, MSVCP_bool virt_init)
11473 basic_ios_char *basic_ios;
11475 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11477 if(virt_init) {
11478 this->base.vbtable = basic_ostringstream_char_vbtable;
11479 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11480 basic_ios_char_ctor(basic_ios);
11481 }else {
11482 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11485 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
11486 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11487 basic_ios->base.vtable = &MSVCP_basic_ostringstream_char_vtable;
11488 return this;
11491 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
11492 /* ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
11493 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor_mode, 12)
11494 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_mode(
11495 basic_ostringstream_char *this, int mode, MSVCP_bool virt_init)
11497 basic_ios_char *basic_ios;
11499 TRACE("(%p %d %d)\n", this, mode, virt_init);
11501 if(virt_init) {
11502 this->base.vbtable = basic_ostringstream_char_vbtable;
11503 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11504 basic_ios_char_ctor(basic_ios);
11505 }else {
11506 basic_ios = basic_ostream_char_get_basic_ios(&this->base);
11509 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_out);
11510 basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11511 basic_ios->base.vtable = &MSVCP_basic_ostringstream_char_vtable;
11512 return this;
11515 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11516 /* ??_F?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11517 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_ctor, 8)
11518 basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor(
11519 basic_ostringstream_char *this, MSVCP_bool virt_init)
11521 return basic_ostringstream_char_ctor_mode(this, 0, virt_init);
11524 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
11525 /* ??1?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
11526 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_dtor, 4)
11527 void __thiscall basic_ostringstream_char_dtor(basic_ios_char *base)
11529 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
11531 TRACE("(%p)\n", this);
11533 basic_stringbuf_char_dtor(&this->strbuf);
11534 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&this->base));
11537 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11538 /* ??_D?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11539 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_vbase_dtor, 4)
11540 void __thiscall basic_ostringstream_char_vbase_dtor(basic_ostringstream_char *this)
11542 TRACE("(%p)\n", this);
11544 basic_ostringstream_char_dtor(basic_ostringstream_char_to_basic_ios(this));
11545 basic_ios_char_dtor(basic_ostream_char_get_basic_ios(&this->base));
11548 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostringstream_char_vector_dtor, 8)
11549 basic_ostringstream_char* __thiscall MSVCP_basic_ostringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11551 basic_ostringstream_char *this = basic_ostringstream_char_from_basic_ios(base);
11553 TRACE("(%p %x)\n", this, flags);
11555 if(flags & 2) {
11556 /* we have an array, with the number of elements stored before the first object */
11557 int i, *ptr = (int *)this-1;
11559 for(i=*ptr-1; i>=0; i--)
11560 basic_ostringstream_char_vbase_dtor(this+i);
11561 MSVCRT_operator_delete(ptr);
11562 } else {
11563 basic_ostringstream_char_vbase_dtor(this);
11564 if(flags & 1)
11565 MSVCRT_operator_delete(this);
11568 return this;
11571 /* ?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 */
11572 /* ?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 */
11573 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_rdbuf, 4)
11574 basic_stringbuf_char* __thiscall basic_ostringstream_char_rdbuf(const basic_ostringstream_char *this)
11576 TRACE("(%p)\n", this);
11577 return (basic_stringbuf_char*)&this->strbuf;
11580 /* ?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 */
11581 /* ?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 */
11582 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_set, 8)
11583 void __thiscall basic_ostringstream_char_str_set(basic_ostringstream_char *this, const basic_string_char *str)
11585 TRACE("(%p %p)\n", this, str);
11586 basic_stringbuf_char_str_set(&this->strbuf, str);
11589 /* ?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 */
11590 /* ?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 */
11591 DEFINE_THISCALL_WRAPPER(basic_ostringstream_char_str_get, 8)
11592 basic_string_char* __thiscall basic_ostringstream_char_str_get(const basic_ostringstream_char *this, basic_string_char *ret)
11594 TRACE("(%p %p)\n", this, ret);
11595 return basic_stringbuf_char_str_get(&this->strbuf, ret);
11598 static inline basic_ios_wchar* basic_ostringstream_wchar_to_basic_ios(basic_ostringstream_wchar *ptr)
11600 return (basic_ios_wchar*)((char*)ptr+basic_ostringstream_wchar_vbtable[1]);
11603 static inline basic_ostringstream_wchar* basic_ostringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
11605 return (basic_ostringstream_wchar*)((char*)ptr-basic_ostringstream_wchar_vbtable[1]);
11608 /* ??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 */
11609 /* ??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 */
11610 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor_str, 16)
11611 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_str(basic_ostringstream_wchar *this,
11612 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
11614 basic_ios_wchar *basic_ios;
11616 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11618 if(virt_init) {
11619 this->base.vbtable = basic_ostringstream_wchar_vbtable;
11620 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11621 basic_ios_wchar_ctor(basic_ios);
11622 }else {
11623 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11626 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_out);
11627 basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11628 basic_ios->base.vtable = &MSVCP_basic_ostringstream_wchar_vtable;
11629 return this;
11632 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@1@H@Z */
11633 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@1@H@Z */
11634 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_str, 16)
11635 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_str(basic_ostringstream_wchar *this,
11636 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
11638 basic_ostringstream_wchar_ctor_str(this, str, mode, virt_init);
11639 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ostringstream_short_vtable;
11640 return this;
11643 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
11644 /* ??0?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
11645 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor_mode, 12)
11646 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor_mode(
11647 basic_ostringstream_wchar *this, int mode, MSVCP_bool virt_init)
11649 basic_ios_wchar *basic_ios;
11651 TRACE("(%p %d %d)\n", this, mode, virt_init);
11653 if(virt_init) {
11654 this->base.vbtable = basic_ostringstream_wchar_vbtable;
11655 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11656 basic_ios_wchar_ctor(basic_ios);
11657 }else {
11658 basic_ios = basic_ostream_wchar_get_basic_ios(&this->base);
11661 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_out);
11662 basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11663 basic_ios->base.vtable = &MSVCP_basic_ostringstream_wchar_vtable;
11664 return this;
11667 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
11668 /* ??0?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
11669 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor_mode, 12)
11670 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor_mode(
11671 basic_ostringstream_wchar *this, int mode, MSVCP_bool virt_init)
11673 basic_ostringstream_wchar_ctor_mode(this, mode, virt_init);
11674 basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ostringstream_short_vtable;
11675 return this;
11678 /* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
11679 /* ??_F?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
11680 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_ctor, 8)
11681 basic_ostringstream_wchar* __thiscall basic_ostringstream_wchar_ctor(
11682 basic_ostringstream_wchar *this, MSVCP_bool virt_init)
11684 return basic_ostringstream_wchar_ctor_mode(this, 0, virt_init);
11687 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
11688 /* ??_F?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
11689 DEFINE_THISCALL_WRAPPER(basic_ostringstream_short_ctor, 8)
11690 basic_ostringstream_wchar* __thiscall basic_ostringstream_short_ctor(
11691 basic_ostringstream_wchar *this, MSVCP_bool virt_init)
11693 return basic_ostringstream_short_ctor_mode(this, 0, virt_init);
11696 /* ??1?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
11697 /* ??1?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
11698 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
11699 /* ??1?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
11700 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_dtor, 4)
11701 void __thiscall basic_ostringstream_wchar_dtor(basic_ios_wchar *base)
11703 basic_ostringstream_wchar *this = basic_ostringstream_wchar_from_basic_ios(base);
11705 TRACE("(%p)\n", this);
11707 basic_stringbuf_wchar_dtor(&this->strbuf);
11708 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&this->base));
11711 /* ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
11712 /* ??_D?$basic_ostringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
11713 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
11714 /* ??_D?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
11715 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_vbase_dtor, 4)
11716 void __thiscall basic_ostringstream_wchar_vbase_dtor(basic_ostringstream_wchar *this)
11718 TRACE("(%p)\n", this);
11720 basic_ostringstream_wchar_dtor(basic_ostringstream_wchar_to_basic_ios(this));
11721 basic_ios_wchar_dtor(basic_ostream_wchar_get_basic_ios(&this->base));
11724 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostringstream_wchar_vector_dtor, 8)
11725 basic_ostringstream_wchar* __thiscall MSVCP_basic_ostringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11727 basic_ostringstream_wchar *this = basic_ostringstream_wchar_from_basic_ios(base);
11729 TRACE("(%p %x)\n", this, flags);
11731 if(flags & 2) {
11732 /* we have an array, with the number of elements stored before the first object */
11733 int i, *ptr = (int *)this-1;
11735 for(i=*ptr-1; i>=0; i--)
11736 basic_ostringstream_wchar_vbase_dtor(this+i);
11737 MSVCRT_operator_delete(ptr);
11738 } else {
11739 basic_ostringstream_wchar_vbase_dtor(this);
11740 if(flags & 1)
11741 MSVCRT_operator_delete(this);
11744 return this;
11747 DEFINE_THISCALL_WRAPPER(MSVCP_basic_ostringstream_short_vector_dtor, 8)
11748 basic_ostringstream_wchar* __thiscall MSVCP_basic_ostringstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
11750 return MSVCP_basic_ostringstream_wchar_vector_dtor(base, flags);
11753 /* ?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 */
11754 /* ?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 */
11755 /* ?rdbuf@?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPAV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
11756 /* ?rdbuf@?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEAV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
11757 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_rdbuf, 4)
11758 basic_stringbuf_wchar* __thiscall basic_ostringstream_wchar_rdbuf(const basic_ostringstream_wchar *this)
11760 TRACE("(%p)\n", this);
11761 return (basic_stringbuf_wchar*)&this->strbuf;
11764 /* ?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 */
11765 /* ?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 */
11766 /* ?str@?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
11767 /* ?str@?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
11768 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_str_set, 8)
11769 void __thiscall basic_ostringstream_wchar_str_set(basic_ostringstream_wchar *this, const basic_string_wchar *str)
11771 TRACE("(%p %p)\n", this, str);
11772 basic_stringbuf_wchar_str_set(&this->strbuf, str);
11775 /* ?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 */
11776 /* ?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 */
11777 /* ?str@?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
11778 /* ?str@?$basic_ostringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
11779 DEFINE_THISCALL_WRAPPER(basic_ostringstream_wchar_str_get, 8)
11780 basic_string_wchar* __thiscall basic_ostringstream_wchar_str_get(const basic_ostringstream_wchar *this, basic_string_wchar *ret)
11782 TRACE("(%p %p)\n", this, ret);
11783 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
11786 static inline basic_ios_char* basic_istringstream_char_to_basic_ios(basic_istringstream_char *ptr)
11788 return (basic_ios_char*)((char*)ptr+basic_istringstream_char_vbtable[1]);
11791 static inline basic_istringstream_char* basic_istringstream_char_from_basic_ios(basic_ios_char *ptr)
11793 return (basic_istringstream_char*)((char*)ptr-basic_istringstream_char_vbtable[1]);
11796 /* ??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 */
11797 /* ??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 */
11798 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_str, 16)
11799 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_str(basic_istringstream_char *this,
11800 const basic_string_char *str, int mode, MSVCP_bool virt_init)
11802 basic_ios_char *basic_ios;
11804 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11806 if(virt_init) {
11807 this->base.vbtable = basic_istringstream_char_vbtable;
11808 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11809 basic_ios_char_ctor(basic_ios);
11810 }else {
11811 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11814 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
11815 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11816 basic_ios->base.vtable = &MSVCP_basic_istringstream_char_vtable;
11817 return this;
11820 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
11821 /* ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
11822 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor_mode, 12)
11823 basic_istringstream_char* __thiscall basic_istringstream_char_ctor_mode(
11824 basic_istringstream_char *this, int mode, MSVCP_bool virt_init)
11826 basic_ios_char *basic_ios;
11828 TRACE("(%p %d %d)\n", this, mode, virt_init);
11830 if(virt_init) {
11831 this->base.vbtable = basic_istringstream_char_vbtable;
11832 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11833 basic_ios_char_ctor(basic_ios);
11834 }else {
11835 basic_ios = basic_istream_char_get_basic_ios(&this->base);
11838 basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_in);
11839 basic_istream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11840 basic_ios->base.vtable = &MSVCP_basic_istringstream_char_vtable;
11841 return this;
11844 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11845 /* ??_F?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11846 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_ctor, 8)
11847 basic_istringstream_char* __thiscall basic_istringstream_char_ctor(
11848 basic_istringstream_char *this, MSVCP_bool virt_init)
11850 return basic_istringstream_char_ctor_mode(this, 0, virt_init);
11853 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
11854 /* ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
11855 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_dtor, 4)
11856 void __thiscall basic_istringstream_char_dtor(basic_ios_char *base)
11858 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
11860 TRACE("(%p)\n", this);
11862 basic_stringbuf_char_dtor(&this->strbuf);
11863 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&this->base));
11866 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
11867 /* ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
11868 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_vbase_dtor, 4)
11869 void __thiscall basic_istringstream_char_vbase_dtor(basic_istringstream_char *this)
11871 TRACE("(%p)\n", this);
11873 basic_istringstream_char_dtor(basic_istringstream_char_to_basic_ios(this));
11874 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base));
11877 DEFINE_THISCALL_WRAPPER(MSVCP_basic_istringstream_char_vector_dtor, 8)
11878 basic_istringstream_char* __thiscall MSVCP_basic_istringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
11880 basic_istringstream_char *this = basic_istringstream_char_from_basic_ios(base);
11882 TRACE("(%p %x)\n", this, flags);
11884 if(flags & 2) {
11885 /* we have an array, with the number of elements stored before the first object */
11886 int i, *ptr = (int *)this-1;
11888 for(i=*ptr-1; i>=0; i--)
11889 basic_istringstream_char_vbase_dtor(this+i);
11890 MSVCRT_operator_delete(ptr);
11891 } else {
11892 basic_istringstream_char_vbase_dtor(this);
11893 if(flags & 1)
11894 MSVCRT_operator_delete(this);
11897 return this;
11900 /* ?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 */
11901 /* ?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 */
11902 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_rdbuf, 4)
11903 basic_stringbuf_char* __thiscall basic_istringstream_char_rdbuf(const basic_istringstream_char *this)
11905 TRACE("(%p)\n", this);
11906 return (basic_stringbuf_char*)&this->strbuf;
11909 /* ?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 */
11910 /* ?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 */
11911 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_set, 8)
11912 void __thiscall basic_istringstream_char_str_set(basic_istringstream_char *this, const basic_string_char *str)
11914 TRACE("(%p %p)\n", this, str);
11915 basic_stringbuf_char_str_set(&this->strbuf, str);
11918 /* ?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 */
11919 /* ?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 */
11920 DEFINE_THISCALL_WRAPPER(basic_istringstream_char_str_get, 8)
11921 basic_string_char* __thiscall basic_istringstream_char_str_get(const basic_istringstream_char *this, basic_string_char *ret)
11923 TRACE("(%p %p)\n", this, ret);
11924 return basic_stringbuf_char_str_get(&this->strbuf, ret);
11927 static inline basic_ios_wchar* basic_istringstream_wchar_to_basic_ios(basic_istringstream_wchar *ptr)
11929 return (basic_ios_wchar*)((char*)ptr+basic_istringstream_wchar_vbtable[1]);
11932 static inline basic_istringstream_wchar* basic_istringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
11934 return (basic_istringstream_wchar*)((char*)ptr-basic_istringstream_wchar_vbtable[1]);
11937 /* ??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 */
11938 /* ??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 */
11939 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor_str, 16)
11940 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_str(basic_istringstream_wchar *this,
11941 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
11943 basic_ios_wchar *basic_ios;
11945 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
11947 if(virt_init) {
11948 this->base.vbtable = basic_istringstream_wchar_vbtable;
11949 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11950 basic_ios_wchar_ctor(basic_ios);
11951 }else {
11952 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11955 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_in);
11956 basic_istream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11957 basic_ios->base.vtable = &MSVCP_basic_istringstream_wchar_vtable;
11958 return this;
11961 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@1@H@Z */
11962 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@1@H@Z */
11963 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor_str, 16)
11964 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor_str(basic_istringstream_wchar *this,
11965 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
11967 basic_istringstream_wchar_ctor_str(this, str, mode, virt_init);
11968 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_istringstream_short_vtable;
11969 return this;
11972 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
11973 /* ??0?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
11974 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor_mode, 12)
11975 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor_mode(
11976 basic_istringstream_wchar *this, int mode, MSVCP_bool virt_init)
11978 basic_ios_wchar *basic_ios;
11980 TRACE("(%p %d %d)\n", this, mode, virt_init);
11982 if(virt_init) {
11983 this->base.vbtable = basic_istringstream_wchar_vbtable;
11984 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11985 basic_ios_wchar_ctor(basic_ios);
11986 }else {
11987 basic_ios = basic_istream_wchar_get_basic_ios(&this->base);
11990 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_in);
11991 basic_istream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE);
11992 basic_ios->base.vtable = &MSVCP_basic_istringstream_wchar_vtable;
11993 return this;
11996 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
11997 /* ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
11998 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor_mode, 12)
11999 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor_mode(
12000 basic_istringstream_wchar *this, int mode, MSVCP_bool virt_init)
12002 basic_istringstream_wchar_ctor_mode(this, mode, virt_init);
12003 basic_istream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_istringstream_short_vtable;
12004 return this;
12007 /* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
12008 /* ??_F?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
12009 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_ctor, 8)
12010 basic_istringstream_wchar* __thiscall basic_istringstream_wchar_ctor(
12011 basic_istringstream_wchar *this, MSVCP_bool virt_init)
12013 return basic_istringstream_wchar_ctor_mode(this, 0, virt_init);
12016 /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
12017 /* ??_F?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
12018 DEFINE_THISCALL_WRAPPER(basic_istringstream_short_ctor, 8)
12019 basic_istringstream_wchar* __thiscall basic_istringstream_short_ctor(
12020 basic_istringstream_wchar *this, MSVCP_bool virt_init)
12022 return basic_istringstream_short_ctor_mode(this, 0, virt_init);
12025 /* ??1?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
12026 /* ??1?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
12027 /* ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
12028 /* ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
12029 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_dtor, 4)
12030 void __thiscall basic_istringstream_wchar_dtor(basic_ios_wchar *base)
12032 basic_istringstream_wchar *this = basic_istringstream_wchar_from_basic_ios(base);
12034 TRACE("(%p)\n", this);
12036 basic_stringbuf_wchar_dtor(&this->strbuf);
12037 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&this->base));
12040 /* ??_D?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
12041 /* ??_D?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
12042 /* ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
12043 /* ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
12044 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_vbase_dtor, 4)
12045 void __thiscall basic_istringstream_wchar_vbase_dtor(basic_istringstream_wchar *this)
12047 TRACE("(%p)\n", this);
12049 basic_istringstream_wchar_dtor(basic_istringstream_wchar_to_basic_ios(this));
12050 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base));
12053 DEFINE_THISCALL_WRAPPER(MSVCP_basic_istringstream_wchar_vector_dtor, 8)
12054 basic_istringstream_wchar* __thiscall MSVCP_basic_istringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
12056 basic_istringstream_wchar *this = basic_istringstream_wchar_from_basic_ios(base);
12058 TRACE("(%p %x)\n", this, flags);
12060 if(flags & 2) {
12061 /* we have an array, with the number of elements stored before the first object */
12062 int i, *ptr = (int *)this-1;
12064 for(i=*ptr-1; i>=0; i--)
12065 basic_istringstream_wchar_vbase_dtor(this+i);
12066 MSVCRT_operator_delete(ptr);
12067 } else {
12068 basic_istringstream_wchar_vbase_dtor(this);
12069 if(flags & 1)
12070 MSVCRT_operator_delete(this);
12073 return this;
12076 DEFINE_THISCALL_WRAPPER(MSVCP_basic_istringstream_short_vector_dtor, 8)
12077 basic_istringstream_wchar* __thiscall MSVCP_basic_istringstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
12079 return MSVCP_basic_istringstream_wchar_vector_dtor(base, flags);
12082 /* ?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 */
12083 /* ?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 */
12084 /* ?rdbuf@?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPAV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
12085 /* ?rdbuf@?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEAV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
12086 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_rdbuf, 4)
12087 basic_stringbuf_wchar* __thiscall basic_istringstream_wchar_rdbuf(const basic_istringstream_wchar *this)
12089 TRACE("(%p)\n", this);
12090 return (basic_stringbuf_wchar*)&this->strbuf;
12093 /* ?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 */
12094 /* ?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 */
12095 /* ?str@?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
12096 /* ?str@?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
12097 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_str_set, 8)
12098 void __thiscall basic_istringstream_wchar_str_set(basic_istringstream_wchar *this, const basic_string_wchar *str)
12100 TRACE("(%p %p)\n", this, str);
12101 basic_stringbuf_wchar_str_set(&this->strbuf, str);
12104 /* ?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 */
12105 /* ?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 */
12106 /* ?str@?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
12107 /* ?str@?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
12108 DEFINE_THISCALL_WRAPPER(basic_istringstream_wchar_str_get, 8)
12109 basic_string_wchar* __thiscall basic_istringstream_wchar_str_get(const basic_istringstream_wchar *this, basic_string_wchar *ret)
12111 TRACE("(%p %p)\n", this, ret);
12112 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
12115 static inline basic_ios_char* basic_stringstream_char_to_basic_ios(basic_stringstream_char *ptr)
12117 return (basic_ios_char*)((char*)ptr+basic_stringstream_char_vbtable1[1]);
12120 static inline basic_stringstream_char* basic_stringstream_char_from_basic_ios(basic_ios_char *ptr)
12122 return (basic_stringstream_char*)((char*)ptr-basic_stringstream_char_vbtable1[1]);
12125 /* ??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 */
12126 /* ??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 */
12127 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_str, 16)
12128 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_str(basic_stringstream_char *this,
12129 const basic_string_char *str, int mode, MSVCP_bool virt_init)
12131 basic_ios_char *basic_ios;
12133 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
12135 if(virt_init) {
12136 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
12137 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
12138 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12139 basic_ios_char_ctor(basic_ios);
12140 }else {
12141 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12144 basic_stringbuf_char_ctor_str(&this->strbuf, str, mode);
12145 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
12146 basic_ios->base.vtable = &MSVCP_basic_stringstream_char_vtable;
12147 return this;
12150 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z */
12151 /* ??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z */
12152 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor_mode, 12)
12153 basic_stringstream_char* __thiscall basic_stringstream_char_ctor_mode(
12154 basic_stringstream_char *this, int mode, MSVCP_bool virt_init)
12156 basic_ios_char *basic_ios;
12158 TRACE("(%p %d %d)\n", this, mode, virt_init);
12160 if(virt_init) {
12161 this->base.base1.vbtable = basic_stringstream_char_vbtable1;
12162 this->base.base2.vbtable = basic_stringstream_char_vbtable2;
12163 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12164 basic_ios_char_ctor(basic_ios);
12165 }else {
12166 basic_ios = basic_istream_char_get_basic_ios(&this->base.base1);
12169 basic_stringbuf_char_ctor_mode(&this->strbuf, mode);
12170 basic_iostream_char_ctor(&this->base, &this->strbuf.base, FALSE);
12171 basic_ios->base.vtable = &MSVCP_basic_stringstream_char_vtable;
12172 return this;
12175 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
12176 /* ??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
12177 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_ctor, 8)
12178 basic_stringstream_char* __thiscall basic_stringstream_char_ctor(
12179 basic_stringstream_char *this, MSVCP_bool virt_init)
12181 return basic_stringstream_char_ctor_mode(
12182 this, OPENMODE_out|OPENMODE_in, virt_init);
12185 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ */
12186 /* ??1?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ */
12187 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_dtor, 4)
12188 void __thiscall basic_stringstream_char_dtor(basic_ios_char *base)
12190 basic_stringstream_char *this = basic_stringstream_char_from_basic_ios(base);
12192 TRACE("(%p)\n", this);
12194 basic_iostream_char_dtor(basic_iostream_char_to_basic_ios(&this->base));
12195 basic_stringbuf_char_dtor(&this->strbuf);
12198 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ */
12199 /* ??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ */
12200 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_vbase_dtor, 4)
12201 void __thiscall basic_stringstream_char_vbase_dtor(basic_stringstream_char *this)
12203 TRACE("(%p)\n", this);
12205 basic_stringstream_char_dtor(basic_stringstream_char_to_basic_ios(this));
12206 basic_ios_char_dtor(basic_istream_char_get_basic_ios(&this->base.base1));
12209 DEFINE_THISCALL_WRAPPER(MSVCP_basic_stringstream_char_vector_dtor, 8)
12210 basic_stringstream_char* __thiscall MSVCP_basic_stringstream_char_vector_dtor(basic_ios_char *base, unsigned int flags)
12212 basic_stringstream_char *this = basic_stringstream_char_from_basic_ios(base);
12214 TRACE("(%p %x)\n", this, flags);
12216 if(flags & 2) {
12217 /* we have an array, with the number of elements stored before the first object */
12218 int i, *ptr = (int *)this-1;
12220 for(i=*ptr-1; i>=0; i--)
12221 basic_stringstream_char_vbase_dtor(this+i);
12222 MSVCRT_operator_delete(ptr);
12223 } else {
12224 basic_stringstream_char_vbase_dtor(this);
12225 if(flags & 1)
12226 MSVCRT_operator_delete(this);
12229 return this;
12232 /* ?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 */
12233 /* ?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 */
12234 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_rdbuf, 4)
12235 basic_stringbuf_char* __thiscall basic_stringstream_char_rdbuf(const basic_stringstream_char *this)
12237 TRACE("(%p)\n", this);
12238 return (basic_stringbuf_char*)&this->strbuf;
12241 /* ?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 */
12242 /* ?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 */
12243 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_set, 8)
12244 void __thiscall basic_stringstream_char_str_set(basic_stringstream_char *this, const basic_string_char *str)
12246 TRACE("(%p %p)\n", this, str);
12247 basic_stringbuf_char_str_set(&this->strbuf, str);
12250 /* ?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 */
12251 /* ?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 */
12252 DEFINE_THISCALL_WRAPPER(basic_stringstream_char_str_get, 8)
12253 basic_string_char* __thiscall basic_stringstream_char_str_get(const basic_stringstream_char *this, basic_string_char *ret)
12255 TRACE("(%p %p)\n", this, ret);
12256 return basic_stringbuf_char_str_get(&this->strbuf, ret);
12259 static inline basic_ios_wchar* basic_stringstream_wchar_to_basic_ios(basic_stringstream_wchar *ptr)
12261 return (basic_ios_wchar*)((char*)ptr+basic_stringstream_wchar_vbtable1[1]);
12264 static inline basic_stringstream_wchar* basic_stringstream_wchar_from_basic_ios(basic_ios_wchar *ptr)
12266 return (basic_stringstream_wchar*)((char*)ptr-basic_stringstream_wchar_vbtable1[1]);
12269 /* ??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 */
12270 /* ??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 */
12271 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor_str, 16)
12272 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_str(basic_stringstream_wchar *this,
12273 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
12275 basic_ios_wchar *basic_ios;
12277 TRACE("(%p %p %d %d)\n", this, str, mode, virt_init);
12279 if(virt_init) {
12280 this->base.base1.vbtable = basic_stringstream_wchar_vbtable1;
12281 this->base.base2.vbtable = basic_stringstream_wchar_vbtable2;
12282 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12283 basic_ios_wchar_ctor(basic_ios);
12284 }else {
12285 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12288 basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode);
12289 basic_iostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE);
12290 basic_ios->base.vtable = &MSVCP_basic_stringstream_wchar_vtable;
12291 return this;
12294 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@1@H@Z */
12295 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@1@H@Z */
12296 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor_str, 16)
12297 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor_str(basic_stringstream_wchar *this,
12298 const basic_string_wchar *str, int mode, MSVCP_bool virt_init)
12300 basic_stringstream_wchar_ctor_str(this, str, mode, virt_init);
12301 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_stringstream_short_vtable;
12302 return this;
12305 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@H@Z */
12306 /* ??0?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@H@Z */
12307 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor_mode, 12)
12308 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor_mode(
12309 basic_stringstream_wchar *this, int mode, MSVCP_bool virt_init)
12311 basic_ios_wchar *basic_ios;
12313 TRACE("(%p %d %d)\n", this, mode, virt_init);
12315 if(virt_init) {
12316 this->base.base1.vbtable = basic_stringstream_wchar_vbtable1;
12317 this->base.base2.vbtable = basic_stringstream_wchar_vbtable2;
12318 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12319 basic_ios_wchar_ctor(basic_ios);
12320 }else {
12321 basic_ios = basic_istream_wchar_get_basic_ios(&this->base.base1);
12324 basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode);
12325 basic_iostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE);
12326 basic_ios->base.vtable = &MSVCP_basic_stringstream_wchar_vtable;
12327 return this;
12330 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z */
12331 /* ??0?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z */
12332 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor_mode, 12)
12333 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor_mode(
12334 basic_stringstream_wchar *this, int mode, MSVCP_bool virt_init)
12336 basic_stringstream_wchar_ctor_mode(this, mode, virt_init);
12337 basic_istream_wchar_get_basic_ios(&this->base.base1)->base.vtable = &MSVCP_basic_stringstream_short_vtable;
12338 return this;
12341 /* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
12342 /* ??_F?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
12343 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_ctor, 8)
12344 basic_stringstream_wchar* __thiscall basic_stringstream_wchar_ctor(
12345 basic_stringstream_wchar *this, MSVCP_bool virt_init)
12347 return basic_stringstream_wchar_ctor_mode(
12348 this, OPENMODE_out|OPENMODE_in, virt_init);
12351 /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
12352 /* ??_F?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
12353 DEFINE_THISCALL_WRAPPER(basic_stringstream_short_ctor, 8)
12354 basic_stringstream_wchar* __thiscall basic_stringstream_short_ctor(
12355 basic_stringstream_wchar *this, MSVCP_bool virt_init)
12357 return basic_stringstream_short_ctor_mode(
12358 this, OPENMODE_out|OPENMODE_in, virt_init);
12361 /* ??1?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UAE@XZ */
12362 /* ??1?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@UEAA@XZ */
12363 /* ??1?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ */
12364 /* ??1?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ */
12365 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_dtor, 4)
12366 void __thiscall basic_stringstream_wchar_dtor(basic_ios_wchar *base)
12368 basic_stringstream_wchar *this = basic_stringstream_wchar_from_basic_ios(base);
12370 TRACE("(%p)\n", this);
12372 basic_iostream_wchar_dtor(basic_iostream_wchar_to_basic_ios(&this->base));
12373 basic_stringbuf_wchar_dtor(&this->strbuf);
12376 /* ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXXZ */
12377 /* ??_D?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXXZ */
12378 /* ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ */
12379 /* ??_D?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXXZ */
12380 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_vbase_dtor, 4)
12381 void __thiscall basic_stringstream_wchar_vbase_dtor(basic_stringstream_wchar *this)
12383 TRACE("(%p)\n", this);
12385 basic_stringstream_wchar_dtor(basic_stringstream_wchar_to_basic_ios(this));
12386 basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(&this->base.base1));
12389 DEFINE_THISCALL_WRAPPER(MSVCP_basic_stringstream_wchar_vector_dtor, 8)
12390 basic_stringstream_wchar* __thiscall MSVCP_basic_stringstream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags)
12392 basic_stringstream_wchar *this = basic_stringstream_wchar_from_basic_ios(base);
12394 TRACE("(%p %x)\n", this, flags);
12396 if(flags & 2) {
12397 /* we have an array, with the number of elements stored before the first object */
12398 int i, *ptr = (int *)this-1;
12400 for(i=*ptr-1; i>=0; i--)
12401 basic_stringstream_wchar_vbase_dtor(this+i);
12402 MSVCRT_operator_delete(ptr);
12403 } else {
12404 basic_stringstream_wchar_vbase_dtor(this);
12405 if(flags & 1)
12406 MSVCRT_operator_delete(this);
12409 return this;
12412 DEFINE_THISCALL_WRAPPER(MSVCP_basic_stringstream_short_vector_dtor, 8)
12413 basic_stringstream_wchar* __thiscall MSVCP_basic_stringstream_short_vector_dtor(basic_ios_wchar *base, unsigned int flags)
12415 return MSVCP_basic_stringstream_wchar_vector_dtor(base, flags);
12418 /* ?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 */
12419 /* ?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 */
12420 /* ?rdbuf@?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPAV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
12421 /* ?rdbuf@?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEAV?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
12422 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_rdbuf, 4)
12423 basic_stringbuf_wchar* __thiscall basic_stringstream_wchar_rdbuf(const basic_stringstream_wchar *this)
12425 TRACE("(%p)\n", this);
12426 return (basic_stringbuf_wchar*)&this->strbuf;
12429 /* ?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 */
12430 /* ?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 */
12431 /* ?str@?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
12432 /* ?str@?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAAXAEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
12433 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_str_set, 8)
12434 void __thiscall basic_stringstream_wchar_str_set(basic_stringstream_wchar *this, const basic_string_wchar *str)
12436 TRACE("(%p %p)\n", this, str);
12437 basic_stringbuf_wchar_str_set(&this->strbuf, str);
12440 /* ?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 */
12441 /* ?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 */
12442 /* ?str@?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
12443 /* ?str@?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
12444 DEFINE_THISCALL_WRAPPER(basic_stringstream_wchar_str_get, 8)
12445 basic_string_wchar* __thiscall basic_stringstream_wchar_str_get(const basic_stringstream_wchar *this, basic_string_wchar *ret)
12447 TRACE("(%p %p)\n", this, ret);
12448 return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
12451 /* ?_Init@strstreambuf@std@@IAEXHPAD0H@Z */
12452 /* ?_Init@strstreambuf@std@@IEAAX_JPEAD1H@Z */
12453 DEFINE_THISCALL_WRAPPER(strstreambuf__Init, 24)
12454 void __thiscall strstreambuf__Init(strstreambuf *this, streamsize len, char *g, char *p, int mode)
12456 TRACE("(%p %s %p %p %d)\n", this, wine_dbgstr_longlong(len), g, p, mode);
12458 this->minsize = 32;
12459 this->endsave = NULL;
12460 this->strmode = mode;
12461 this->palloc = NULL;
12462 this->pfree = NULL;
12464 if(!g) {
12465 this->strmode |= STRSTATE_Dynamic;
12466 if(len > this->minsize)
12467 this->minsize = len;
12468 this->seekhigh = NULL;
12469 return;
12472 if(len < 0)
12473 len = INT_MAX;
12474 else if(!len)
12475 len = strlen(g);
12477 this->seekhigh = g+len;
12478 basic_streambuf_char_setg(&this->base, g, g, p ? p : this->seekhigh);
12479 if(p)
12480 basic_streambuf_char_setp(&this->base, p, this->seekhigh);
12483 /* ??0strstreambuf@std@@QAE@PACH0@Z */
12484 /* ??0strstreambuf@std@@QEAA@PEAC_J0@Z */
12485 /* ??0strstreambuf@std@@QAE@PADH0@Z */
12486 /* ??0strstreambuf@std@@QEAA@PEAD_J0@Z */
12487 /* ??0strstreambuf@std@@QAE@PAEH0@Z */
12488 /* ??0strstreambuf@std@@QEAA@PEAE_J0@Z */
12489 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get_put, 20)
12490 strstreambuf* __thiscall strstreambuf_ctor_get_put(strstreambuf *this, char *g, streamsize len, char *p)
12492 TRACE("(%p %p %s %p)\n", this, g, wine_dbgstr_longlong(len), p);
12494 basic_streambuf_char_ctor(&this->base);
12495 this->base.vtable = &MSVCP_strstreambuf_vtable;
12497 strstreambuf__Init(this, len, g, p, 0);
12498 return this;
12501 /* ??0strstreambuf@std@@QAE@H@Z */
12502 /* ??0strstreambuf@std@@QEAA@_J@Z */
12503 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_len, 12)
12504 strstreambuf* __thiscall strstreambuf_ctor_len(strstreambuf *this, streamsize len)
12506 return strstreambuf_ctor_get_put(this, NULL, len, NULL);
12509 /* ??0strstreambuf@std@@QAE@P6APAXI@ZP6AXPAX@Z@Z */
12510 /* ??0strstreambuf@std@@QEAA@P6APEAX_K@ZP6AXPEAX@Z@Z */
12511 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_alloc, 12)
12512 strstreambuf* __thiscall strstreambuf_ctor_alloc(strstreambuf *this, void* (__cdecl *palloc)(MSVCP_size_t), void (__cdecl *pfree)(void*))
12514 TRACE("(%p %p %p)\n", this, palloc, pfree);
12516 strstreambuf_ctor_get_put(this, NULL, 0, NULL);
12517 this->palloc = palloc;
12518 this->pfree = pfree;
12519 return this;
12522 /* ??0strstreambuf@std@@QAE@PBCH@Z */
12523 /* ??0strstreambuf@std@@QEAA@PEBC_J@Z */
12524 /* ??0strstreambuf@std@@QAE@PBDH@Z */
12525 /* ??0strstreambuf@std@@QEAA@PEBD_J@Z */
12526 /* ??0strstreambuf@std@@QAE@PBEH@Z */
12527 /* ??0strstreambuf@std@@QEAA@PEBE_J@Z */
12528 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get, 16)
12529 strstreambuf* __thiscall strstreambuf_ctor_get(strstreambuf *this, const char *g, streamsize len)
12531 TRACE("(%p %p %s)\n", this, g, wine_dbgstr_longlong(len));
12533 strstreambuf_ctor_get_put(this, NULL, 0, NULL);
12534 this->strmode |= STRSTATE_Constant;
12535 return this;
12538 /* ??_Fstrstreambuf@std@@QAEXXZ */
12539 /* ??_Fstrstreambuf@std@@QEAAXXZ */
12540 DEFINE_THISCALL_WRAPPER(strstreambuf_ctor, 4)
12541 strstreambuf* __thiscall strstreambuf_ctor(strstreambuf *this)
12543 return strstreambuf_ctor_get_put(this, NULL, 0, NULL);
12546 /* ?_Tidy@strstreambuf@std@@IAEXXZ */
12547 /* ?_Tidy@strstreambuf@std@@IEAAXXZ */
12548 DEFINE_THISCALL_WRAPPER(strstreambuf__Tidy, 4)
12549 void __thiscall strstreambuf__Tidy(strstreambuf *this)
12551 TRACE("(%p)\n", this);
12553 if((this->strmode & STRSTATE_Allocated) && !(this->strmode & STRSTATE_Frozen)) {
12554 if(this->pfree)
12555 this->pfree(basic_streambuf_char_eback(&this->base));
12556 else
12557 MSVCRT_operator_delete(basic_streambuf_char_eback(&this->base));
12560 this->endsave = NULL;
12561 this->seekhigh = NULL;
12562 this->strmode &= ~(STRSTATE_Allocated | STRSTATE_Frozen);
12563 basic_streambuf_char_setg(&this->base, NULL, NULL, NULL);
12564 basic_streambuf_char_setp(&this->base, NULL, NULL);
12567 /* ??1strstreambuf@std@@UAE@XZ */
12568 /* ??1strstreambuf@std@@UEAA@XZ */
12569 DEFINE_THISCALL_WRAPPER(strstreambuf_dtor, 4)
12570 void __thiscall strstreambuf_dtor(strstreambuf *this)
12572 TRACE("(%p)\n", this);
12574 strstreambuf__Tidy(this);
12575 basic_streambuf_char_dtor(&this->base);
12578 DEFINE_THISCALL_WRAPPER(MSVCP_strstreambuf_vector_dtor, 8)
12579 strstreambuf* __thiscall MSVCP_strstreambuf_vector_dtor(strstreambuf *this, unsigned int flags)
12581 TRACE("(%p %x)\n", this, flags);
12582 if(flags & 2) {
12583 /* we have an array, with the number of elements stored before the first object */
12584 int i, *ptr = (int *)this-1;
12586 for(i=*ptr-1; i>=0; i--)
12587 strstreambuf_dtor(this+i);
12588 MSVCRT_operator_delete(ptr);
12589 } else {
12590 strstreambuf_dtor(this);
12591 if(flags & 1)
12592 MSVCRT_operator_delete(this);
12595 return this;
12598 /* ?freeze@strstreambuf@std@@QAEX_N@Z */
12599 /* ?freeze@strstreambuf@std@@QEAAX_N@Z */
12600 DEFINE_THISCALL_WRAPPER(strstreambuf_freeze, 8)
12601 void __thiscall strstreambuf_freeze(strstreambuf *this, MSVCP_bool freeze)
12603 TRACE("(%p %d)\n", this, freeze);
12605 if(!freeze == !(this->strmode *STRSTATE_Frozen))
12606 return;
12608 if(freeze) {
12609 this->strmode |= STRSTATE_Frozen;
12610 this->endsave = basic_streambuf_char_epptr(&this->base);
12611 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
12612 basic_streambuf_char_pptr(&this->base), basic_streambuf_char_eback(&this->base));
12613 }else {
12614 this->strmode &= ~STRSTATE_Frozen;
12615 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
12616 basic_streambuf_char_pptr(&this->base), this->endsave);
12620 /* ?str@strstreambuf@std@@QAEPADXZ */
12621 /* ?str@strstreambuf@std@@QEAAPEADXZ */
12622 DEFINE_THISCALL_WRAPPER(strstreambuf_str, 4)
12623 char* __thiscall strstreambuf_str(strstreambuf *this)
12625 TRACE("(%p)\n", this);
12627 strstreambuf_freeze(this, TRUE);
12628 return basic_streambuf_char_gptr(&this->base);
12631 /* ?pcount@strstreambuf@std@@QBEHXZ */
12632 /* ?pcount@strstreambuf@std@@QEBA_JXZ */
12633 DEFINE_THISCALL_WRAPPER(strstreambuf_pcount, 4)
12634 streamsize __thiscall strstreambuf_pcount(const strstreambuf *this)
12636 char *ppos = basic_streambuf_char_pptr(&this->base);
12638 TRACE("(%p)\n", this);
12640 return ppos ? ppos-basic_streambuf_char_pbase(&this->base) : 0;
12643 /* ?overflow@strstreambuf@std@@MAEHH@Z */
12644 /* ?overflow@strstreambuf@std@@MEAAHH@Z */
12645 DEFINE_THISCALL_WRAPPER(strstreambuf_overflow, 8)
12646 int __thiscall strstreambuf_overflow(strstreambuf *this, int c)
12648 MSVCP_size_t old_size, size;
12649 char *ptr, *buf;
12651 TRACE("(%p %d)\n", this, c);
12653 if(c == EOF)
12654 return !EOF;
12656 if(this->strmode & STRSTATE_Frozen)
12657 return EOF;
12659 ptr = basic_streambuf_char_pptr(&this->base);
12660 if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
12661 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
12663 if(!(this->strmode & STRSTATE_Dynamic) || (this->strmode & STRSTATE_Constant))
12664 return EOF;
12666 ptr = basic_streambuf_char_eback(&this->base);
12667 old_size = ptr ? basic_streambuf_char_epptr(&this->base) - ptr : 0;
12669 size = old_size + old_size/2;
12670 if(size < this->minsize)
12671 size = this->minsize;
12673 if(this->palloc)
12674 buf = this->palloc(size);
12675 else
12676 buf = MSVCRT_operator_new(size);
12677 if(!buf)
12678 return EOF;
12680 memcpy(buf, ptr, old_size);
12681 if(this->strmode & STRSTATE_Allocated) {
12682 if(this->pfree)
12683 this->pfree(ptr);
12684 else
12685 MSVCRT_operator_delete(ptr);
12688 this->strmode |= STRSTATE_Allocated;
12689 if(!old_size) {
12690 this->seekhigh = buf;
12691 basic_streambuf_char_setp(&this->base, buf, buf+size);
12692 basic_streambuf_char_setg(&this->base, buf, buf, buf);
12693 }else {
12694 this->seekhigh = this->seekhigh-ptr+buf;
12695 basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base)-ptr+buf,
12696 basic_streambuf_char_pptr(&this->base)-ptr+buf, buf+size);
12697 basic_streambuf_char_setg(&this->base, buf, basic_streambuf_char_gptr(&this->base)-ptr+buf,
12698 basic_streambuf_char_pptr(&this->base));
12701 return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
12704 /* ?pbackfail@strstreambuf@std@@MAEHH@Z */
12705 /* ?pbackfail@strstreambuf@std@@MEAAHH@Z */
12706 DEFINE_THISCALL_WRAPPER(strstreambuf_pbackfail, 8)
12707 int __thiscall strstreambuf_pbackfail(strstreambuf *this, int c)
12709 char *ptr = basic_streambuf_char_gptr(&this->base);
12711 TRACE("(%p %d)\n", this, c);
12713 if(ptr<=basic_streambuf_char_eback(&this->base)
12714 || ((this->strmode & STRSTATE_Constant) && c!=ptr[-1]))
12715 return EOF;
12717 basic_streambuf_char_gbump(&this->base, -1);
12718 if(c == EOF)
12719 return !EOF;
12720 if(this->strmode & STRSTATE_Constant)
12721 return (unsigned char)c;
12723 return (unsigned char)(ptr[0] = c);
12726 /* ?seekoff@strstreambuf@std@@MAE?AV?$fpos@H@2@JHH@Z */
12727 /* ?seekoff@strstreambuf@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
12728 DEFINE_THISCALL_WRAPPER(strstreambuf_seekoff, 24)
12729 fpos_int* __thiscall strstreambuf_seekoff(strstreambuf *this, fpos_int *ret, streamoff off, int way, int mode)
12731 char *eback = basic_streambuf_char_eback(&this->base);
12732 char *pptr = basic_streambuf_char_pptr(&this->base);
12733 char *gptr = basic_streambuf_char_gptr(&this->base);
12735 TRACE("(%p %p %s %d %d)\n", this, ret, wine_dbgstr_longlong(off), way, mode);
12737 ret->off = 0;
12738 ret->state = 0;
12740 if(pptr > this->seekhigh)
12741 this->seekhigh = pptr;
12743 if((mode & OPENMODE_in) && gptr) {
12744 if(way==SEEKDIR_cur && !(mode & OPENMODE_out))
12745 off += gptr-eback;
12746 else if(way == SEEKDIR_end)
12747 off += this->seekhigh-eback;
12748 else if(way != SEEKDIR_beg)
12749 off = -1;
12751 if(off<0 || off>this->seekhigh-eback) {
12752 off = -1;
12753 }else {
12754 basic_streambuf_char_gbump(&this->base, eback-gptr+off);
12755 if((mode & OPENMODE_out) && pptr) {
12756 basic_streambuf_char_setp_next(&this->base, eback,
12757 gptr, basic_streambuf_char_epptr(&this->base));
12760 }else if((mode & OPENMODE_out) && pptr) {
12761 if(way == SEEKDIR_cur)
12762 off += pptr-eback;
12763 else if(way == SEEKDIR_end)
12764 off += this->seekhigh-eback;
12765 else if(way != SEEKDIR_beg)
12766 off = -1;
12768 if(off<0 || off>this->seekhigh-eback)
12769 off = -1;
12770 else
12771 basic_streambuf_char_pbump(&this->base, eback-pptr+off);
12772 }else {
12773 off = -1;
12776 ret->pos = off;
12777 return ret;
12780 /* ?seekpos@strstreambuf@std@@MAE?AV?$fpos@H@2@V32@H@Z */
12781 /* ?seekpos@strstreambuf@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
12782 DEFINE_THISCALL_WRAPPER(strstreambuf_seekpos, 36)
12783 fpos_int* __thiscall strstreambuf_seekpos(strstreambuf *this, fpos_int *ret, fpos_int pos, int mode)
12785 TRACE("(%p %p %s %d)\n", this, ret, debugstr_fpos_int(&pos), mode);
12787 if(pos.off==0 && pos.pos==-1 && pos.state==0) {
12788 *ret = pos;
12789 return ret;
12792 return strstreambuf_seekoff(this, ret, pos.off, SEEKDIR_beg, mode);
12795 /* ?underflow@strstreambuf@std@@MAEHXZ */
12796 /* ?underflow@strstreambuf@std@@MEAAHXZ */
12797 DEFINE_THISCALL_WRAPPER(strstreambuf_underflow, 4)
12798 int __thiscall strstreambuf_underflow(strstreambuf *this)
12800 char *gptr = basic_streambuf_char_gptr(&this->base);
12801 char *pptr;
12803 TRACE("(%p)\n", this);
12805 if(!gptr)
12806 return EOF;
12808 if(gptr < basic_streambuf_char_egptr(&this->base))
12809 return (unsigned char)(*gptr);
12811 pptr = basic_streambuf_char_gptr(&this->base);
12812 if(pptr > this->seekhigh)
12813 this->seekhigh = pptr;
12815 if(this->seekhigh <= gptr)
12816 return EOF;
12818 basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base),
12819 gptr, this->seekhigh);
12820 return (unsigned char)(*gptr);
12823 static void __cdecl setprecision_func(ios_base *base, streamsize prec)
12825 ios_base_precision_set(base, prec);
12828 /* ?setprecision@std@@YA?AU?$_Smanip@H@1@H@Z */
12829 /* ?setprecision@std@@YA?AU?$_Smanip@_J@1@_J@Z */
12830 manip_streamsize* __cdecl setprecision(manip_streamsize *ret, streamsize prec)
12832 TRACE("(%p %s)\n", ret, wine_dbgstr_longlong(prec));
12834 ret->pfunc = setprecision_func;
12835 ret->arg = prec;
12836 return ret;
12839 static void __cdecl setw_func(ios_base *base, streamsize width)
12841 ios_base_width_set(base, width);
12844 /* ?setw@std@@YA?AU?$_Smanip@H@1@H@Z */
12845 /* ?setw@std@@YA?AU?$_Smanip@_J@1@_J@Z */
12846 manip_streamsize* __cdecl setw(manip_streamsize *ret, streamsize width)
12848 TRACE("(%p %s)\n", ret, wine_dbgstr_longlong(width));
12850 ret->pfunc = setw_func;
12851 ret->arg = width;
12852 return ret;
12855 static basic_filebuf_char filebuf_char_stdin;
12856 /* ?cin@std@@3V?$basic_istream@DU?$char_traits@D@std@@@1@A */
12857 struct {
12858 basic_istream_char obj;
12859 basic_ios_char vbase;
12860 } cin = { { 0 } };
12861 /* ?_Ptr_cin@std@@3PAV?$basic_istream@DU?$char_traits@D@std@@@1@A */
12862 /* ?_Ptr_cin@std@@3PEAV?$basic_istream@DU?$char_traits@D@std@@@1@EA */
12863 basic_istream_char *_Ptr_cin = &cin.obj;
12865 static basic_filebuf_wchar filebuf_short_stdin;
12866 /* ?wcin@std@@3V?$basic_istream@GU?$char_traits@G@std@@@1@A */
12867 struct {
12868 basic_istream_wchar obj;
12869 basic_ios_wchar vbase;
12870 } ucin = { { 0 } };
12871 /* ?_Ptr_wcin@std@@3PAV?$basic_istream@GU?$char_traits@G@std@@@1@A */
12872 /* ?_Ptr_wcin@std@@3PEAV?$basic_istream@GU?$char_traits@G@std@@@1@EA */
12873 basic_istream_wchar *_Ptr_ucin = &ucin.obj;
12875 static basic_filebuf_wchar filebuf_wchar_stdin;
12876 /* ?wcin@std@@3V?$basic_istream@_WU?$char_traits@_W@std@@@1@A */
12877 struct {
12878 basic_istream_wchar obj;
12879 basic_ios_wchar vbase;
12880 } wcin = { { 0 } };
12881 /* ?_Ptr_wcin@std@@3PAV?$basic_istream@_WU?$char_traits@_W@std@@@1@A */
12882 /* ?_Ptr_wcin@std@@3PEAV?$basic_istream@_WU?$char_traits@_W@std@@@1@EA */
12883 basic_istream_wchar *_Ptr_wcin = &wcin.obj;
12885 static basic_filebuf_char filebuf_char_stdout;
12886 /* ?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12887 struct {
12888 basic_ostream_char obj;
12889 basic_ios_char vbase;
12890 } cout = { { 0 } };
12891 /* ?_Ptr_cout@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12892 /* ?_Ptr_cout@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
12893 basic_ostream_char *_Ptr_cout = &cout.obj;
12895 static basic_filebuf_wchar filebuf_short_stdout;
12896 /* ?wcout@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12897 struct {
12898 basic_ostream_wchar obj;
12899 basic_ios_wchar vbase;
12900 } ucout = { { 0 } };
12901 /* ?_Ptr_wcout@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12902 /* ?_Ptr_wcout@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
12903 basic_ostream_wchar *_Ptr_ucout = &ucout.obj;
12905 static basic_filebuf_wchar filebuf_wchar_stdout;
12906 /* ?wcout@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12907 struct {
12908 basic_ostream_wchar obj;
12909 basic_ios_wchar vbase;
12910 } wcout = { { 0 } };
12911 /* ?_Ptr_wcout@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12912 /* ?_Ptr_wcout@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
12913 basic_ostream_wchar *_Ptr_wcout = &wcout.obj;
12915 static basic_filebuf_char filebuf_char_stderr;
12916 /* ?cerr@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12917 struct {
12918 basic_ostream_char obj;
12919 basic_ios_char vbase;
12920 } cerr = { { 0 } };
12921 /* ?_Ptr_cerr@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12922 /* ?_Ptr_cerr@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
12923 basic_ostream_char *_Ptr_cerr = &cerr.obj;
12925 static basic_filebuf_wchar filebuf_short_stderr;
12926 /* ?wcerr@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12927 struct {
12928 basic_ostream_wchar obj;
12929 basic_ios_wchar vbase;
12930 } ucerr = { { 0 } };
12931 /* ?_Ptr_wcerr@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12932 /* ?_Ptr_wcerr@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
12933 basic_ostream_wchar *_Ptr_ucerr = &ucerr.obj;
12935 static basic_filebuf_wchar filebuf_wchar_stderr;
12936 /* ?wcerr@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12937 struct {
12938 basic_ostream_wchar obj;
12939 basic_ios_wchar vbase;
12940 } wcerr = { { 0 } };
12941 /* ?_Ptr_wcerr@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12942 /* ?_Ptr_wcerr@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
12943 basic_ostream_wchar *_Ptr_wcerr = &wcerr.obj;
12945 static basic_filebuf_char filebuf_char_log;
12946 /* ?clog@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12947 struct {
12948 basic_ostream_char obj;
12949 basic_ios_char vbase;
12950 } clog = { { 0 } };
12951 /* ?_Ptr_clog@std@@3PAV?$basic_ostream@DU?$char_traits@D@std@@@1@A */
12952 /* ?_Ptr_clog@std@@3PEAV?$basic_ostream@DU?$char_traits@D@std@@@1@EA */
12953 basic_ostream_char *_Ptr_clog = &clog.obj;
12955 static basic_filebuf_wchar filebuf_short_log;
12956 /* ?wclog@std@@3V?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12957 struct {
12958 basic_ostream_wchar obj;
12959 basic_ios_wchar vbase;
12960 } uclog = { { 0 } };
12961 /* ?_Ptr_wclog@std@@3PAV?$basic_ostream@GU?$char_traits@G@std@@@1@A */
12962 /* ?_Ptr_wclog@std@@3PEAV?$basic_ostream@GU?$char_traits@G@std@@@1@EA */
12963 basic_ostream_wchar *_Ptr_uclog = &uclog.obj;
12965 static basic_filebuf_wchar filebuf_wchar_log;
12966 /* ?wclog@std@@3V?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12967 struct {
12968 basic_ostream_wchar obj;
12969 basic_ios_wchar vbase;
12970 } wclog = { { 0 } };
12971 /* ?_Ptr_wclog@std@@3PAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@A */
12972 /* ?_Ptr_wclog@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@EA */
12973 basic_ostream_wchar *_Ptr_wclog = &wclog.obj;
12975 void init_io(void)
12977 basic_filebuf_char_ctor_file(&filebuf_char_stdin, stdin);
12978 basic_istream_char_ctor(&cin.obj, &filebuf_char_stdin.base, FALSE/*FIXME*/, TRUE);
12980 basic_filebuf_short_ctor_file(&filebuf_short_stdin, stdin);
12981 basic_istream_short_ctor(&ucin.obj, &filebuf_short_stdin.base, FALSE/*FIXME*/, TRUE);
12983 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stdin, stdin);
12984 basic_istream_wchar_ctor(&wcin.obj, &filebuf_wchar_stdin.base, FALSE/*FIXME*/, TRUE);
12986 basic_filebuf_char_ctor_file(&filebuf_char_stdout, stdout);
12987 basic_ostream_char_ctor(&cout.obj, &filebuf_char_stdout.base, FALSE/*FIXME*/, TRUE);
12989 basic_filebuf_short_ctor_file(&filebuf_short_stdout, stdout);
12990 basic_ostream_short_ctor(&ucout.obj, &filebuf_short_stdout.base, FALSE/*FIXME*/, TRUE);
12992 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stdout, stdout);
12993 basic_ostream_wchar_ctor(&wcout.obj, &filebuf_wchar_stdout.base, FALSE/*FIXME*/, TRUE);
12995 basic_filebuf_char_ctor_file(&filebuf_char_stderr, stderr);
12996 basic_ostream_char_ctor(&cerr.obj, &filebuf_char_stderr.base, FALSE/*FIXME*/, TRUE);
12998 basic_filebuf_short_ctor_file(&filebuf_short_stderr, stderr);
12999 basic_ostream_short_ctor(&ucerr.obj, &filebuf_short_stderr.base, FALSE/*FIXME*/, TRUE);
13001 basic_filebuf_wchar_ctor_file(&filebuf_wchar_stderr, stderr);
13002 basic_ostream_wchar_ctor(&wcerr.obj, &filebuf_wchar_stderr.base, FALSE/*FIXME*/, TRUE);
13004 basic_filebuf_char_ctor_file(&filebuf_char_log, stderr);
13005 basic_ostream_char_ctor(&clog.obj, &filebuf_char_log.base, FALSE/*FIXME*/, TRUE);
13007 basic_filebuf_short_ctor_file(&filebuf_short_log, stderr);
13008 basic_ostream_short_ctor(&uclog.obj, &filebuf_short_log.base, FALSE/*FIXME*/, TRUE);
13010 basic_filebuf_wchar_ctor_file(&filebuf_wchar_log, stderr);
13011 basic_ostream_wchar_ctor(&wclog.obj, &filebuf_wchar_log.base, FALSE/*FIXME*/, TRUE);
13014 void free_io(void)
13016 basic_istream_char_dtor(basic_istream_char_to_basic_ios(&cin.obj));
13017 basic_filebuf_char_dtor(&filebuf_char_stdin);
13019 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&ucin.obj));
13020 basic_filebuf_wchar_dtor(&filebuf_short_stdin);
13022 basic_istream_wchar_dtor(basic_istream_wchar_to_basic_ios(&wcin.obj));
13023 basic_filebuf_wchar_dtor(&filebuf_wchar_stdin);
13025 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&cout.obj));
13026 basic_filebuf_char_dtor(&filebuf_char_stdout);
13028 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&ucout.obj));
13029 basic_filebuf_wchar_dtor(&filebuf_short_stdout);
13031 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&wcout.obj));
13032 basic_filebuf_wchar_dtor(&filebuf_wchar_stdout);
13034 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&cerr.obj));
13035 basic_filebuf_char_dtor(&filebuf_char_stderr);
13037 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&ucerr.obj));
13038 basic_filebuf_wchar_dtor(&filebuf_short_stderr);
13040 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&wcerr.obj));
13041 basic_filebuf_wchar_dtor(&filebuf_wchar_stderr);
13043 basic_ostream_char_dtor(basic_ostream_char_to_basic_ios(&clog.obj));
13044 basic_filebuf_char_dtor(&filebuf_char_log);
13046 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&uclog.obj));
13047 basic_filebuf_wchar_dtor(&filebuf_short_log);
13049 basic_ostream_wchar_dtor(basic_ostream_wchar_to_basic_ios(&wclog.obj));
13050 basic_filebuf_wchar_dtor(&filebuf_wchar_log);