Release 1.7.13.
[wine/multimedia.git] / dlls / msvcp90 / msvcp90.h
blobf5e79f5a44d2772c23073429f8ea230915ff250a
1 /*
2 * Copyright 2010 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 "stdlib.h"
20 #include "windef.h"
21 #include "cxx.h"
23 #define ALIGNED_SIZE(size, alignment) (((size)+((alignment)-1))/(alignment)*(alignment))
25 typedef unsigned char MSVCP_bool;
26 typedef SIZE_T MSVCP_size_t;
28 #if _MSVCP_VER >= 100
29 typedef __int64 DECLSPEC_ALIGN(8) streamoff;
30 typedef __int64 DECLSPEC_ALIGN(8) streamsize;
31 #define STREAMOFF_BITS 64
32 #define STREAMSIZE_BITS 64
33 #else
34 typedef SSIZE_T streamoff;
35 typedef SSIZE_T streamsize;
36 #define STREAMOFF_BITS 32
37 #define STREAMSIZE_BITS 32
38 #endif
40 void __cdecl _invalid_parameter(const wchar_t*, const wchar_t*,
41 const wchar_t*, unsigned int, uintptr_t);
42 BOOL __cdecl __uncaught_exception(void);
44 extern void* (__cdecl *MSVCRT_operator_new)(MSVCP_size_t);
45 extern void (__cdecl *MSVCRT_operator_delete)(void*);
46 extern void* (__cdecl *MSVCRT_set_new_handler)(void*);
48 /* basic_string<char, char_traits<char>, allocator<char>> */
49 #define BUF_SIZE_CHAR 16
50 typedef struct
52 void *allocator;
53 union {
54 char buf[BUF_SIZE_CHAR];
55 char *ptr;
56 } data;
57 MSVCP_size_t size;
58 MSVCP_size_t res;
59 } basic_string_char;
61 basic_string_char* __thiscall MSVCP_basic_string_char_ctor(basic_string_char*);
62 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr(basic_string_char*, const char*);
63 basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr_len(basic_string_char*, const char*, MSVCP_size_t);
64 basic_string_char* __thiscall MSVCP_basic_string_char_copy_ctor(basic_string_char*, const basic_string_char*);
65 void __thiscall MSVCP_basic_string_char_dtor(basic_string_char*);
66 const char* __thiscall MSVCP_basic_string_char_c_str(const basic_string_char*);
67 void __thiscall MSVCP_basic_string_char_clear(basic_string_char*);
68 basic_string_char* __thiscall MSVCP_basic_string_char_append_ch(basic_string_char*, char);
69 MSVCP_size_t __thiscall MSVCP_basic_string_char_length(const basic_string_char*);
70 basic_string_char* __thiscall MSVCP_basic_string_char_assign(basic_string_char*, const basic_string_char*);
72 #define BUF_SIZE_WCHAR 8
73 typedef struct
75 void *allocator;
76 union {
77 wchar_t buf[BUF_SIZE_WCHAR];
78 wchar_t *ptr;
79 } data;
80 MSVCP_size_t size;
81 MSVCP_size_t res;
82 } basic_string_wchar;
84 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor(basic_string_wchar*);
85 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr(basic_string_wchar*, const wchar_t*);
86 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr_len(basic_string_wchar*, const wchar_t*, MSVCP_size_t);
87 void __thiscall MSVCP_basic_string_wchar_dtor(basic_string_wchar*);
88 const wchar_t* __thiscall MSVCP_basic_string_wchar_c_str(const basic_string_wchar*);
89 void __thiscall MSVCP_basic_string_wchar_clear(basic_string_wchar*);
90 basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_ch(basic_string_wchar*, wchar_t);
91 MSVCP_size_t __thiscall MSVCP_basic_string_wchar_length(const basic_string_wchar*);
93 char* __thiscall MSVCP_allocator_char_allocate(void*, MSVCP_size_t);
94 void __thiscall MSVCP_allocator_char_deallocate(void*, char*, MSVCP_size_t);
95 MSVCP_size_t __thiscall MSVCP_allocator_char_max_size(void*);
96 wchar_t* __thiscall MSVCP_allocator_wchar_allocate(void*, MSVCP_size_t);
97 void __thiscall MSVCP_allocator_wchar_deallocate(void*, wchar_t*, MSVCP_size_t);
98 MSVCP_size_t __thiscall MSVCP_allocator_wchar_max_size(void*);
100 typedef struct
102 char *str;
103 char null_str;
104 } _Yarn_char;
106 _Yarn_char* __thiscall _Yarn_char_ctor_cstr(_Yarn_char*, const char*);
107 _Yarn_char* __thiscall _Yarn_char_copy_ctor(_Yarn_char*, const _Yarn_char*);
108 const char* __thiscall _Yarn_char_c_str(const _Yarn_char*);
109 void __thiscall _Yarn_char_dtor(_Yarn_char*);
110 _Yarn_char* __thiscall _Yarn_char_op_assign(_Yarn_char*, const _Yarn_char*);
112 /* class locale::facet */
113 typedef struct {
114 const vtable_ptr *vtable;
115 MSVCP_size_t refs;
116 } locale_facet;
118 typedef enum {
119 CODECVT_ok = 0,
120 CODECVT_partial = 1,
121 CODECVT_error = 2,
122 CODECVT_noconv = 3
123 } codecvt_base_result;
125 typedef struct {
126 #if _MSVCP_VER < 110
127 LCID handle;
128 #endif
129 unsigned page;
130 const short *table;
131 int delfl;
132 #if _MSVCP_VER >= 110
133 wchar_t *name;
134 #endif
135 } _Ctypevec;
137 /* class codecvt_base */
138 typedef struct {
139 locale_facet facet;
140 } codecvt_base;
142 /* class codecvt<char> */
143 typedef struct {
144 codecvt_base base;
145 } codecvt_char;
147 MSVCP_bool __thiscall codecvt_base_always_noconv(const codecvt_base*);
148 int __thiscall codecvt_char_unshift(const codecvt_char*, int*, char*, char*, char**);
149 int __thiscall codecvt_char_out(const codecvt_char*, int*, const char*,
150 const char*, const char**, char*, char*, char**);
151 int __thiscall codecvt_char_in(const codecvt_char*, int*, const char*,
152 const char*, const char**, char*, char*, char**);
153 int __thiscall codecvt_base_max_length(const codecvt_base*);
155 typedef struct {
156 LCID handle;
157 unsigned page;
158 } _Cvtvec;
160 /* class codecvt<wchar> */
161 typedef struct {
162 codecvt_base base;
163 _Cvtvec cvt;
164 } codecvt_wchar;
166 int __thiscall codecvt_wchar_unshift(const codecvt_wchar*, int*, char*, char*, char**);
167 int __thiscall codecvt_wchar_out(const codecvt_wchar*, int*, const wchar_t*,
168 const wchar_t*, const wchar_t**, char*, char*, char**);
169 int __thiscall codecvt_wchar_in(const codecvt_wchar*, int*, const char*,
170 const char*, const char**, wchar_t*, wchar_t*, wchar_t**);
172 /* class ctype_base */
173 typedef struct {
174 locale_facet facet;
175 } ctype_base;
177 /* class ctype<char> */
178 typedef struct {
179 ctype_base base;
180 _Ctypevec ctype;
181 } ctype_char;
183 MSVCP_bool __thiscall ctype_char_is_ch(const ctype_char*, short, char);
184 char __thiscall ctype_char_narrow_ch(const ctype_char*, char, char);
185 char __thiscall ctype_char_widen_ch(const ctype_char*, char);
187 /* class ctype<wchar> */
188 typedef struct {
189 ctype_base base;
190 _Ctypevec ctype;
191 _Cvtvec cvt;
192 } ctype_wchar;
194 MSVCP_bool __thiscall ctype_wchar_is_ch(const ctype_wchar*, short, wchar_t);
195 char __thiscall ctype_wchar_narrow_ch(const ctype_wchar*, wchar_t, char);
196 wchar_t __thiscall ctype_wchar_widen_ch(const ctype_wchar*, char);
198 /* class locale */
199 typedef struct
201 struct _locale__Locimp *ptr;
202 } locale;
204 locale* __thiscall locale_ctor(locale*);
205 locale* __thiscall locale_copy_ctor(locale*, const locale*);
206 locale* __thiscall locale_operator_assign(locale*, const locale*);
207 void __thiscall locale_dtor(locale*);
208 void free_locale(void);
209 codecvt_char* codecvt_char_use_facet(const locale*);
210 codecvt_wchar* codecvt_wchar_use_facet(const locale*);
211 codecvt_wchar* codecvt_short_use_facet(const locale*);
212 ctype_char* ctype_char_use_facet(const locale*);
213 ctype_wchar* ctype_wchar_use_facet(const locale*);
214 ctype_wchar* ctype_short_use_facet(const locale*);
216 /* class _Lockit */
217 typedef struct {
218 int locktype;
219 } _Lockit;
221 #define _LOCK_LOCALE 0
222 #define _LOCK_MALLOC 1
223 #define _LOCK_STREAM 2
224 #define _LOCK_DEBUG 3
225 #define _MAX_LOCK 4
227 void init_lockit(void);
228 void free_lockit(void);
229 _Lockit* __thiscall _Lockit_ctor_locktype(_Lockit*, int);
230 void __thiscall _Lockit_dtor(_Lockit*);
232 /* class mutex */
233 typedef struct {
234 void *mutex;
235 } mutex;
237 mutex* __thiscall mutex_ctor(mutex*);
238 void __thiscall mutex_dtor(mutex*);
239 void __thiscall mutex_lock(mutex*);
240 void __thiscall mutex_unlock(mutex*);
242 typedef enum {
243 FMTFLAG_skipws = 0x0001,
244 FMTFLAG_unitbuf = 0x0002,
245 FMTFLAG_uppercase = 0x0004,
246 FMTFLAG_showbase = 0x0008,
247 FMTFLAG_showpoint = 0x0010,
248 FMTFLAG_showpos = 0x0020,
249 FMTFLAG_left = 0x0040,
250 FMTFLAG_right = 0x0080,
251 FMTFLAG_internal = 0x0100,
252 FMTFLAG_dec = 0x0200,
253 FMTFLAG_oct = 0x0400,
254 FMTFLAG_hex = 0x0800,
255 FMTFLAG_scientific = 0x1000,
256 FMTFLAG_fixed = 0x2000,
257 FMTFLAG_hexfloat = 0x3000,
258 FMTFLAG_boolalpha = 0x4000,
259 FMTFLAG_stdio = 0x8000,
260 FMTFLAG_adjustfield = FMTFLAG_left|FMTFLAG_right|FMTFLAG_internal,
261 FMTFLAG_basefield = FMTFLAG_dec|FMTFLAG_oct|FMTFLAG_hex,
262 FMTFLAG_floatfield = FMTFLAG_scientific|FMTFLAG_fixed,
263 FMTFLAG_mask = 0xffff
264 } IOSB_fmtflags;
266 typedef enum {
267 OPENMODE_in = 0x01,
268 OPENMODE_out = 0x02,
269 OPENMODE_ate = 0x04,
270 OPENMODE_app = 0x08,
271 OPENMODE_trunc = 0x10,
272 OPENMODE__Nocreate = 0x40,
273 OPENMODE__Noreplace = 0x80,
274 OPENMODE_binary = 0x20,
275 OPENMODE_mask = 0xff
276 } IOSB_openmode;
278 typedef enum {
279 SEEKDIR_beg = 0x0,
280 SEEKDIR_cur = 0x1,
281 SEEKDIR_end = 0x2,
282 SEEKDIR_mask = 0x3
283 } IOSB_seekdir;
285 typedef enum {
286 IOSTATE_goodbit = 0x00,
287 IOSTATE_eofbit = 0x01,
288 IOSTATE_failbit = 0x02,
289 IOSTATE_badbit = 0x04,
290 IOSTATE__Hardfail = 0x10,
291 IOSTATE_mask = 0x17
292 } IOSB_iostate;
294 typedef struct _iosarray {
295 struct _iosarray *next;
296 int index;
297 int long_val;
298 void *ptr_val;
299 } IOS_BASE_iosarray;
301 typedef enum {
302 EVENT_erase_event,
303 EVENT_imbue_event,
304 EVENT_copyfmt_event
305 } IOS_BASE_event;
307 struct _ios_base;
308 typedef void (CDECL *IOS_BASE_event_callback)(IOS_BASE_event, struct _ios_base*, int);
309 typedef struct _fnarray {
310 struct _fnarray *next;
311 int index;
312 IOS_BASE_event_callback event_handler;
313 } IOS_BASE_fnarray;
315 /* class ios_base */
316 typedef struct _ios_base {
317 const vtable_ptr *vtable;
318 #if _MSVCP_VER >= 100
319 MSVCP_size_t DECLSPEC_ALIGN(8) stdstr;
320 #else
321 MSVCP_size_t stdstr;
322 #endif
323 IOSB_iostate state;
324 IOSB_iostate except;
325 IOSB_fmtflags fmtfl;
326 streamsize prec;
327 streamsize wide;
328 IOS_BASE_iosarray *arr;
329 IOS_BASE_fnarray *calls;
330 locale *loc;
331 } ios_base;
333 /* class basic_streambuf<char> */
334 typedef struct {
335 const vtable_ptr *vtable;
336 #if _MSVCP_VER <= 100
337 mutex lock;
338 #endif
339 char *rbuf;
340 char *wbuf;
341 char **prbuf;
342 char **pwbuf;
343 char *rpos;
344 char *wpos;
345 char **prpos;
346 char **pwpos;
347 int rsize;
348 int wsize;
349 int *prsize;
350 int *pwsize;
351 locale *loc;
352 } basic_streambuf_char;
354 typedef struct {
355 basic_streambuf_char *strbuf;
356 MSVCP_bool got;
357 char val;
358 } istreambuf_iterator_char;
360 typedef struct {
361 #if _MSVCP_VER == 80
362 void *iter_container;
363 #endif
364 MSVCP_bool failed;
365 basic_streambuf_char *strbuf;
366 } ostreambuf_iterator_char;
368 int __thiscall basic_streambuf_char_sgetc(basic_streambuf_char*);
369 int __thiscall basic_streambuf_char_sbumpc(basic_streambuf_char*);
370 int __thiscall basic_streambuf_char_sputc(basic_streambuf_char*, char);
372 /* class basic_streambuf<wchar> */
373 typedef struct {
374 const vtable_ptr *vtable;
375 #if _MSVCP_VER <= 100
376 mutex lock;
377 #endif
378 wchar_t *rbuf;
379 wchar_t *wbuf;
380 wchar_t **prbuf;
381 wchar_t **pwbuf;
382 wchar_t *rpos;
383 wchar_t *wpos;
384 wchar_t **prpos;
385 wchar_t **pwpos;
386 int rsize;
387 int wsize;
388 int *prsize;
389 int *pwsize;
390 locale *loc;
391 } basic_streambuf_wchar;
393 typedef struct {
394 basic_streambuf_wchar *strbuf;
395 MSVCP_bool got;
396 wchar_t val;
397 } istreambuf_iterator_wchar;
399 typedef struct {
400 #if _MSVCP_VER == 80
401 void *iter_container;
402 #endif
403 MSVCP_bool failed;
404 basic_streambuf_wchar *strbuf;
405 } ostreambuf_iterator_wchar;
407 unsigned short __thiscall basic_streambuf_wchar_sgetc(basic_streambuf_wchar*);
408 unsigned short __thiscall basic_streambuf_wchar_sbumpc(basic_streambuf_wchar*);
409 unsigned short __thiscall basic_streambuf_wchar_sputc(basic_streambuf_wchar*, wchar_t);
411 /* class num_get<char> */
412 typedef struct {
413 locale_facet facet;
414 _Cvtvec cvt;
415 } num_get;
417 num_get* num_get_char_use_facet(const locale*);
418 istreambuf_iterator_char* __thiscall num_get_char_get_long(const num_get*, istreambuf_iterator_char*,
419 istreambuf_iterator_char, istreambuf_iterator_char, ios_base*, int*, LONG*);
420 istreambuf_iterator_char* __thiscall num_get_char_get_ushort(const num_get*, istreambuf_iterator_char*,
421 istreambuf_iterator_char, istreambuf_iterator_char, ios_base*, int*, unsigned short*);
422 istreambuf_iterator_char* __thiscall num_get_char_get_uint(const num_get*, istreambuf_iterator_char*,
423 istreambuf_iterator_char, istreambuf_iterator_char, ios_base*, int*, unsigned int*);
424 istreambuf_iterator_char* __thiscall num_get_char_get_ulong(const num_get*, istreambuf_iterator_char*,
425 istreambuf_iterator_char, istreambuf_iterator_char, ios_base*, int*, ULONG*);
426 istreambuf_iterator_char* __thiscall num_get_char_get_float(const num_get*, istreambuf_iterator_char*,
427 istreambuf_iterator_char, istreambuf_iterator_char, ios_base*, int*, float*);
428 istreambuf_iterator_char *__thiscall num_get_char_get_double(const num_get*, istreambuf_iterator_char*,
429 istreambuf_iterator_char, istreambuf_iterator_char, ios_base*, int*, double*);
430 istreambuf_iterator_char *__thiscall num_get_char_get_ldouble(const num_get*, istreambuf_iterator_char*,
431 istreambuf_iterator_char, istreambuf_iterator_char, ios_base*, int*, double*);
432 istreambuf_iterator_char *__thiscall num_get_char_get_void(const num_get*, istreambuf_iterator_char*,
433 istreambuf_iterator_char, istreambuf_iterator_char, ios_base*, int*, void**);
434 istreambuf_iterator_char *__thiscall num_get_char_get_int64(const num_get*, istreambuf_iterator_char*,
435 istreambuf_iterator_char, istreambuf_iterator_char, ios_base*, int*, LONGLONG*);
436 istreambuf_iterator_char *__thiscall num_get_char_get_uint64(const num_get*, istreambuf_iterator_char*,
437 istreambuf_iterator_char, istreambuf_iterator_char, ios_base*, int*, ULONGLONG*);
438 istreambuf_iterator_char *__thiscall num_get_char_get_bool(const num_get*, istreambuf_iterator_char*,
439 istreambuf_iterator_char, istreambuf_iterator_char, ios_base*, int*, MSVCP_bool*);
441 num_get* num_get_wchar_use_facet(const locale*);
442 num_get* num_get_short_use_facet(const locale*);
443 istreambuf_iterator_wchar* __thiscall num_get_wchar_get_long(const num_get*, istreambuf_iterator_wchar*,
444 istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, LONG*);
445 istreambuf_iterator_wchar* __thiscall num_get_wchar_get_ushort(const num_get*, istreambuf_iterator_wchar*,
446 istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, unsigned short*);
447 istreambuf_iterator_wchar* __thiscall num_get_wchar_get_uint(const num_get*, istreambuf_iterator_wchar*,
448 istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, unsigned int*);
449 istreambuf_iterator_wchar* __thiscall num_get_wchar_get_ulong(const num_get*, istreambuf_iterator_wchar*,
450 istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, ULONG*);
451 istreambuf_iterator_wchar* __thiscall num_get_wchar_get_float(const num_get*, istreambuf_iterator_wchar*,
452 istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, float*);
453 istreambuf_iterator_wchar *__thiscall num_get_wchar_get_double(const num_get*, istreambuf_iterator_wchar*,
454 istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, double*);
455 istreambuf_iterator_wchar *__thiscall num_get_wchar_get_ldouble(const num_get*, istreambuf_iterator_wchar*,
456 istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, double*);
457 istreambuf_iterator_wchar *__thiscall num_get_wchar_get_void(const num_get*, istreambuf_iterator_wchar*,
458 istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, void**);
459 istreambuf_iterator_wchar *__thiscall num_get_wchar_get_int64(const num_get*, istreambuf_iterator_wchar*,
460 istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, LONGLONG*);
461 istreambuf_iterator_wchar *__thiscall num_get_wchar_get_uint64(const num_get*, istreambuf_iterator_wchar*,
462 istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, ULONGLONG*);
463 istreambuf_iterator_wchar *__thiscall num_get_wchar_get_bool(const num_get*, istreambuf_iterator_wchar*,
464 istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, MSVCP_bool*);
466 /* class num_put<char> */
467 /* class num_put<wchar> */
468 typedef struct {
469 locale_facet facet;
470 _Cvtvec cvt;
471 } num_put;
473 num_put* num_put_char_use_facet(const locale*);
474 ostreambuf_iterator_char* __thiscall num_put_char_put_long(const num_put*, ostreambuf_iterator_char*,
475 ostreambuf_iterator_char, ios_base*, char, LONG);
476 ostreambuf_iterator_char* __thiscall num_put_char_put_ulong(const num_put*, ostreambuf_iterator_char*,
477 ostreambuf_iterator_char, ios_base*, char, ULONG);
478 ostreambuf_iterator_char* __thiscall num_put_char_put_double(const num_put*, ostreambuf_iterator_char*,
479 ostreambuf_iterator_char, ios_base*, char, double);
480 ostreambuf_iterator_char* __thiscall num_put_char_put_ldouble(const num_put*, ostreambuf_iterator_char*,
481 ostreambuf_iterator_char, ios_base*, char, double);
482 ostreambuf_iterator_char* __thiscall num_put_char_put_ptr(const num_put*, ostreambuf_iterator_char*,
483 ostreambuf_iterator_char, ios_base*, char, const void*);
484 ostreambuf_iterator_char* __thiscall num_put_char_put_int64(const num_put*, ostreambuf_iterator_char*,
485 ostreambuf_iterator_char, ios_base*, char, __int64);
486 ostreambuf_iterator_char* __thiscall num_put_char_put_uint64(const num_put*, ostreambuf_iterator_char*,
487 ostreambuf_iterator_char, ios_base*, char, unsigned __int64);
488 ostreambuf_iterator_char* __thiscall num_put_char_put_bool(const num_put*, ostreambuf_iterator_char*,
489 ostreambuf_iterator_char, ios_base*, char, MSVCP_bool);
491 num_put* num_put_wchar_use_facet(const locale*);
492 num_put* num_put_short_use_facet(const locale*);
493 ostreambuf_iterator_wchar* __thiscall num_put_wchar_put_long(const num_put*, ostreambuf_iterator_wchar*,
494 ostreambuf_iterator_wchar, ios_base*, wchar_t, LONG);
495 ostreambuf_iterator_wchar* __thiscall num_put_wchar_put_ulong(const num_put*, ostreambuf_iterator_wchar*,
496 ostreambuf_iterator_wchar, ios_base*, wchar_t, ULONG);
497 ostreambuf_iterator_wchar* __thiscall num_put_wchar_put_double(const num_put*, ostreambuf_iterator_wchar*,
498 ostreambuf_iterator_wchar, ios_base*, wchar_t, double);
499 ostreambuf_iterator_wchar* __thiscall num_put_wchar_put_ldouble(const num_put*, ostreambuf_iterator_wchar*,
500 ostreambuf_iterator_wchar, ios_base*, wchar_t, double);
501 ostreambuf_iterator_wchar* __thiscall num_put_wchar_put_ptr(const num_put*, ostreambuf_iterator_wchar*,
502 ostreambuf_iterator_wchar, ios_base*, wchar_t, const void*);
503 ostreambuf_iterator_wchar* __thiscall num_put_wchar_put_int64(const num_put*, ostreambuf_iterator_wchar*,
504 ostreambuf_iterator_wchar, ios_base*, wchar_t, __int64);
505 ostreambuf_iterator_wchar* __thiscall num_put_wchar_put_uint64(const num_put*, ostreambuf_iterator_wchar*,
506 ostreambuf_iterator_wchar, ios_base*, wchar_t, unsigned __int64);
507 ostreambuf_iterator_wchar* __thiscall num_put_wchar_put_bool(const num_put*, ostreambuf_iterator_wchar*,
508 ostreambuf_iterator_wchar, ios_base*, wchar_t, MSVCP_bool);
510 void init_exception(void*);
511 void init_locale(void*);
512 void init_io(void*);
513 void free_io(void);
515 /* class complex<float> */
516 typedef struct {
517 float real;
518 float imag;
519 } complex_float;
521 /* class complex<double> */
522 /* class complex<long double> */
523 typedef struct {
524 double real;
525 double imag;
526 } complex_double;
528 #if _MSVCP_VER < 80
529 #define memcpy_s( dst, size, src, count ) (memcpy( (dst), (src), (count) ), 0)
530 #define memmove_s( dst, size, src, count ) (memmove( (dst), (src), (count) ), 0)
531 #define mbstowcs_s( ret, wcs, size, mbs, count ) (mbstowcs( (wcs), (mbs), (count) ))
532 #define hypotf( x, y ) ((float)hypot( (double)(x), (double)(y) ))
533 #endif