winex11: Create contexts at initialization time to avoid the need for locks.
[wine/multimedia.git] / dlls / msvcp60 / msvcp.h
blob7e1c47a02aa9952c4ecd9a171ecb9f1f414aa71d
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 typedef unsigned char MSVCP_bool;
24 typedef SIZE_T MSVCP_size_t;
25 typedef SIZE_T streamoff;
26 typedef SIZE_T streamsize;
28 void __cdecl _invalid_parameter(const wchar_t*, const wchar_t*,
29 const wchar_t*, unsigned int, uintptr_t);
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*);
35 /* basic_string<char, char_traits<char>, allocator<char>> */
36 typedef struct
38 void *allocator;
39 char *ptr;
40 MSVCP_size_t size;
41 MSVCP_size_t res;
42 } basic_string_char;
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*);
49 typedef struct
51 void *allocator;
52 wchar_t *ptr;
53 MSVCP_size_t size;
54 MSVCP_size_t res;
55 } basic_string_wchar;
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*);
64 /* class locale */
65 typedef struct
67 struct _locale__Locimp *ptr;
68 } locale;
70 locale* __thiscall locale_ctor(locale*);
71 void __thiscall locale_dtor(locale*);
73 /* class _Lockit */
74 typedef struct {
75 char empty_struct;
76 } _Lockit;
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
84 void init_lockit(void);
85 void free_lockit(void);
86 void __thiscall _Lockit_dtor(_Lockit*);
88 /* class mutex */
89 typedef struct {
90 void *mutex;
91 } mutex;
93 mutex* __thiscall mutex_ctor(mutex*);
94 void __thiscall mutex_dtor(mutex*);
95 void __thiscall mutex_lock(mutex*);
96 void __thiscall mutex_unlock(mutex*);