comdlg32/tests: Explicitly set the structure size to the nt40 version size.
[wine] / dlls / msvcp60 / msvcp.h
1 /*
2  * Copyright 2010 Piotr Caban for CodeWeavers
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 #include "stdlib.h"
20 #include "windef.h"
21 #include "cxx.h"
22
23 typedef unsigned char MSVCP_bool;
24 typedef SIZE_T MSVCP_size_t;
25 typedef SIZE_T streamoff;
26 typedef SIZE_T streamsize;
27
28 void __cdecl _invalid_parameter(const wchar_t*, const wchar_t*,
29         const wchar_t*, unsigned int, uintptr_t);
30
31 extern void* (__cdecl *MSVCRT_operator_new)(MSVCP_size_t);
32 extern void (__cdecl *MSVCRT_operator_delete)(void*);
33 extern void* (__cdecl *MSVCRT_set_new_handler)(void*);
34
35 /* basic_string<char, char_traits<char>, allocator<char>> */
36 typedef struct
37 {
38     void *allocator;
39     char *ptr;
40     MSVCP_size_t size;
41     MSVCP_size_t res;
42 } basic_string_char;
43
44 basic_string_char* __stdcall MSVCP_basic_string_char_ctor_cstr(basic_string_char*, const char*);
45 basic_string_char* __stdcall MSVCP_basic_string_char_copy_ctor(basic_string_char*, const basic_string_char*);
46 void __stdcall MSVCP_basic_string_char_dtor(basic_string_char*);
47 const char* __stdcall MSVCP_basic_string_char_c_str(const basic_string_char*);
48
49 typedef struct
50 {
51     void *allocator;
52     wchar_t *ptr;
53     MSVCP_size_t size;
54     MSVCP_size_t res;
55 } basic_string_wchar;
56
57 char* __stdcall MSVCP_allocator_char_allocate(void*, MSVCP_size_t);
58 void __stdcall MSVCP_allocator_char_deallocate(void*, char*, MSVCP_size_t);
59 MSVCP_size_t __stdcall MSVCP_allocator_char_max_size(void*);
60 wchar_t* __stdcall MSVCP_allocator_wchar_allocate(void*, MSVCP_size_t);
61 void __stdcall MSVCP_allocator_wchar_deallocate(void*, wchar_t*, MSVCP_size_t);
62 MSVCP_size_t __stdcall MSVCP_allocator_wchar_max_size(void*);
63
64 /* class locale */
65 typedef struct
66 {
67     struct _locale__Locimp *ptr;
68 } locale;
69
70 locale* __thiscall locale_ctor(locale*);
71 void __thiscall locale_dtor(locale*);
72
73 /* class _Lockit */
74 typedef struct {
75     char empty_struct;
76 } _Lockit;
77
78 #define _LOCK_LOCALE 0
79 #define _LOCK_MALLOC 1
80 #define _LOCK_STREAM 2
81 #define _LOCK_DEBUG 3
82 #define _MAX_LOCK 4
83
84 void init_lockit(void);
85 void free_lockit(void);
86 void __thiscall _Lockit_dtor(_Lockit*);
87
88 /* class mutex */
89 typedef struct {
90         void *mutex;
91 } mutex;
92
93 mutex* __thiscall mutex_ctor(mutex*);
94 void __thiscall mutex_dtor(mutex*);
95 void __thiscall mutex_lock(mutex*);
96 void __thiscall mutex_unlock(mutex*);
97
98 void init_exception(void*);