Commit 9d7f3c76 authored by Piotr Caban's avatar Piotr Caban Committed by Alexandre Julliard

msvcp60: Copy source files from msvcp90.

parent d844ceea
MODULE = msvcp60.dll
MODULE = msvcp60.dll
IMPORTS = msvcrt
MODCFLAGS = @BUILTINFLAG@
EXTRAINCL = -I$(top_srcdir)/include/msvcrt
C_SRCS = \
exception.c \
ios.c \
locale.c \
main.c \
memory.c \
misc.c \
......
......@@ -211,8 +211,6 @@ extern void *vtbl_wrapper_40;
extern void *vtbl_wrapper_44;
extern void *vtbl_wrapper_48;
extern void *vtbl_wrapper_52;
extern void *vtbl_wrapper_56;
extern void *vtbl_wrapper_60;
#else
......
......@@ -103,8 +103,7 @@ void * __thiscall MSVCP_type_info_vector_dtor(type_info * _this, unsigned int fl
DEFINE_RTTI_DATA0( type_info, 0, ".?AVtype_info@@" );
DEFINE_THISCALL_WRAPPER(MSVCP_exception_ctor, 8)
exception* __thiscall MSVCP_exception_ctor(exception *this, const char *name)
static exception* MSVCP_exception_ctor(exception *this, const char *name)
{
TRACE("(%p %s)\n", this, name);
......@@ -317,15 +316,14 @@ typedef struct {
basic_string_char str;
} logic_error;
DEFINE_THISCALL_WRAPPER(MSVCP_logic_error_ctor, 8)
logic_error* __thiscall MSVCP_logic_error_ctor(
static logic_error* MSVCP_logic_error_ctor(
logic_error *this, const char *name)
{
TRACE("%p %s\n", this, name);
this->e.vtable = &MSVCP_logic_error_vtable;
this->e.name = NULL;
this->e.do_free = FALSE;
MSVCP_basic_string_char_ctor_cstr(&this->str, name);
basic_string_char_ctor_cstr(&this->str, name);
return this;
}
......@@ -337,7 +335,7 @@ logic_error* __thiscall MSVCP_logic_error_copy_ctor(
{
TRACE("%p %p\n", this, rhs);
MSVCP_exception_copy_ctor(&this->e, &rhs->e);
MSVCP_basic_string_char_copy_ctor(&this->str, &rhs->str);
basic_string_char_copy_ctor(&this->str, &rhs->str);
this->e.vtable = &MSVCP_logic_error_vtable;
return this;
}
......@@ -348,7 +346,7 @@ DEFINE_THISCALL_WRAPPER(MSVCP_logic_error_ctor_bstr, 8)
logic_error* __thiscall MSVCP_logic_error_ctor_bstr(logic_error *this, const basic_string_char *str)
{
TRACE("(%p %p)\n", this, str);
return MSVCP_logic_error_ctor(this, MSVCP_basic_string_char_c_str(str));
return MSVCP_logic_error_ctor(this, basic_string_char_c_str(str));
}
/* ??1logic_error@std@@UAE@XZ */
......@@ -364,7 +362,7 @@ void __thiscall MSVCP_logic_error_dtor(logic_error *this)
{
TRACE("%p\n", this);
MSVCP_exception_dtor(&this->e);
MSVCP_basic_string_char_dtor(&this->str);
basic_string_char_dtor(&this->str);
}
DEFINE_THISCALL_WRAPPER(MSVCP_logic_error_vector_dtor, 8)
......@@ -403,7 +401,7 @@ DEFINE_THISCALL_WRAPPER(MSVCP_logic_error_what, 4)
const char* __thiscall MSVCP_logic_error_what(logic_error *this)
{
TRACE("%p\n", this);
return MSVCP_basic_string_char_c_str(&this->str);
return basic_string_char_c_str(&this->str);
}
DEFINE_RTTI_DATA1(logic_error, 0, &exception_rtti_base_descriptor, ".?AVlogic_error@std@@");
......@@ -435,8 +433,7 @@ static const cxx_exception_type logic_error_cxx_type = {
/* length_error class data */
typedef logic_error length_error;
DEFINE_THISCALL_WRAPPER(MSVCP_length_error_ctor, 8)
length_error* __thiscall MSVCP_length_error_ctor(
static length_error* MSVCP_length_error_ctor(
length_error *this, const char *name)
{
TRACE("%p %s\n", this, name);
......@@ -463,7 +460,7 @@ DEFINE_THISCALL_WRAPPER(MSVCP_length_error_ctor_bstr, 8)
length_error* __thiscall MSVCP_length_error_ctor_bstr(length_error *this, const basic_string_char *str)
{
TRACE("(%p %p)\n", this, str);
return MSVCP_length_error_ctor(this, MSVCP_basic_string_char_c_str(str));
return MSVCP_length_error_ctor(this, basic_string_char_c_str(str));
}
/* ??4length_error@std@@QAEAAV01@ABV01@@Z */
......@@ -504,8 +501,7 @@ static const cxx_exception_type length_error_cxx_type = {
/* out_of_range class data */
typedef logic_error out_of_range;
DEFINE_THISCALL_WRAPPER(MSVCP_out_of_range_ctor, 8)
out_of_range* __thiscall MSVCP_out_of_range_ctor(
static out_of_range* MSVCP_out_of_range_ctor(
out_of_range *this, const char *name)
{
TRACE("%p %s\n", this, name);
......@@ -532,7 +528,7 @@ DEFINE_THISCALL_WRAPPER(MSVCP_out_of_range_ctor_bstr, 8)
out_of_range* __thiscall MSVCP_out_of_range_ctor_bstr(out_of_range *this, const basic_string_char *str)
{
TRACE("(%p %p)\n", this, str);
return MSVCP_out_of_range_ctor(this, MSVCP_basic_string_char_c_str(str));
return MSVCP_out_of_range_ctor(this, basic_string_char_c_str(str));
}
/* ??4out_of_range@std@@QAEAAV01@ABV01@@Z */
......@@ -573,8 +569,7 @@ static const cxx_exception_type out_of_range_cxx_type = {
/* invalid_argument class data */
typedef logic_error invalid_argument;
DEFINE_THISCALL_WRAPPER(MSVCP_invalid_argument_ctor, 8)
invalid_argument* __thiscall MSVCP_invalid_argument_ctor(
static invalid_argument* MSVCP_invalid_argument_ctor(
invalid_argument *this, const char *name)
{
TRACE("%p %s\n", this, name);
......@@ -622,8 +617,7 @@ static const cxx_exception_type invalid_argument_cxx_type = {
/* runtime_error class data */
typedef logic_error runtime_error;
DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_ctor, 8)
runtime_error* __thiscall MSVCP_runtime_error_ctor(
static runtime_error* MSVCP_runtime_error_ctor(
runtime_error *this, const char *name)
{
TRACE("%p %s\n", this, name);
......@@ -650,7 +644,7 @@ DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_ctor_bstr, 8)
runtime_error* __thiscall MSVCP_runtime_error_ctor_bstr(runtime_error *this, const basic_string_char *str)
{
TRACE("(%p %p)\n", this, str);
return MSVCP_runtime_error_ctor(this, MSVCP_basic_string_char_c_str(str));
return MSVCP_runtime_error_ctor(this, basic_string_char_c_str(str));
}
DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_vector_dtor, 8)
......@@ -702,7 +696,7 @@ DEFINE_THISCALL_WRAPPER(MSVCP_runtime_error_what, 4)
const char* __thiscall MSVCP_runtime_error_what(runtime_error *this)
{
TRACE("%p\n", this);
return MSVCP_basic_string_char_c_str(&this->str);
return basic_string_char_c_str(&this->str);
}
/* failure class data */
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -52,14 +52,11 @@ DEFINE_VTBL_WRAPPER(40);
DEFINE_VTBL_WRAPPER(44);
DEFINE_VTBL_WRAPPER(48);
DEFINE_VTBL_WRAPPER(52);
DEFINE_VTBL_WRAPPER(56);
DEFINE_VTBL_WRAPPER(60);
#endif
void* (__cdecl *MSVCRT_operator_new)(MSVCP_size_t);
void (__cdecl *MSVCRT_operator_delete)(void*);
void* (__cdecl *MSVCRT_set_new_handler)(void*);
static void init_cxx_funcs(void)
{
......@@ -69,13 +66,11 @@ static void init_cxx_funcs(void)
{
MSVCRT_operator_new = (void*)GetProcAddress(hmod, "??2@YAPEAX_K@Z");
MSVCRT_operator_delete = (void*)GetProcAddress(hmod, "??3@YAXPEAX@Z");
MSVCRT_set_new_handler = (void*)GetProcAddress(hmod, "?_set_new_handler@@YAP6AH_K@ZP6AH0@Z@Z");
}
else
{
MSVCRT_operator_new = (void*)GetProcAddress(hmod, "??2@YAPAXI@Z");
MSVCRT_operator_delete = (void*)GetProcAddress(hmod, "??3@YAXPAX@Z");
MSVCRT_set_new_handler = (void*)GetProcAddress(hmod, "?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z");
}
}
......@@ -91,8 +86,12 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
init_cxx_funcs();
init_lockit();
init_exception(hinstDLL);
init_locale(hinstDLL);
init_io(hinstDLL);
break;
case DLL_PROCESS_DETACH:
free_io();
free_locale();
free_lockit();
break;
}
......
......@@ -29,8 +29,7 @@
/* ??0_Mutex@std@@QAE@XZ */
/* ??0_Mutex@std@@QEAA@XZ */
DEFINE_THISCALL_WRAPPER(mutex_ctor, 4)
mutex* __thiscall mutex_ctor(mutex *this)
mutex* mutex_ctor(mutex *this)
{
this->mutex = CreateMutexW(NULL, FALSE, NULL);
return this;
......@@ -38,24 +37,21 @@ mutex* __thiscall mutex_ctor(mutex *this)
/* ??1_Mutex@std@@QAE@XZ */
/* ??1_Mutex@std@@QEAA@XZ */
DEFINE_THISCALL_WRAPPER(mutex_dtor, 4)
void __thiscall mutex_dtor(mutex *this)
void mutex_dtor(mutex *this)
{
CloseHandle(this->mutex);
}
/* ?_Lock@_Mutex@std@@QAEXXZ */
/* ?_Lock@_Mutex@std@@QEAAXXZ */
DEFINE_THISCALL_WRAPPER(mutex_lock, 4)
void __thiscall mutex_lock(mutex *this)
void mutex_lock(mutex *this)
{
WaitForSingleObject(this->mutex, INFINITE);
}
/* ?_Unlock@_Mutex@std@@QAEXXZ */
/* ?_Unlock@_Mutex@std@@QEAAXXZ */
DEFINE_THISCALL_WRAPPER(mutex_unlock, 4)
void __thiscall mutex_unlock(mutex *this)
void mutex_unlock(mutex *this)
{
ReleaseMutex(this->mutex);
}
......@@ -72,7 +68,7 @@ void free_lockit(void) {
DeleteCriticalSection(&lockit_cs);
}
static _Lockit* __thiscall _Lockit_ctor_locktype(_Lockit *this, int locktype)
_Lockit* __thiscall _Lockit_ctor_locktype(_Lockit *this, int locktype)
{
EnterCriticalSection(&lockit_cs);
return this;
......@@ -93,3 +89,31 @@ void __thiscall _Lockit_dtor(_Lockit *this)
{
LeaveCriticalSection(&lockit_cs);
}
/* wctype */
unsigned short __cdecl wctype(const char *property)
{
static const struct {
const char *name;
unsigned short mask;
} properties[] = {
{ "alnum", _DIGIT|_ALPHA },
{ "alpha", _ALPHA },
{ "cntrl", _CONTROL },
{ "digit", _DIGIT },
{ "graph", _DIGIT|_PUNCT|_ALPHA },
{ "lower", _LOWER },
{ "print", _DIGIT|_PUNCT|_BLANK|_ALPHA },
{ "punct", _PUNCT },
{ "space", _SPACE },
{ "upper", _UPPER },
{ "xdigit", _HEX }
};
int i;
for(i=0; i<sizeof(properties)/sizeof(properties[0]); i++)
if(!strcmp(property, properties[i].name))
return properties[i].mask;
return 0;
}
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -151,6 +151,11 @@ void __thiscall basic_string_char__Eos(basic_string_char *this, MSVCP_size_t len
this->ptr[len] = 0;
}
void basic_string_char_clear(basic_string_char *this)
{
basic_string_char__Eos(this, 0);
}
/* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEX_N@Z */
/* ?_Tidy@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAAX_N@Z */
DEFINE_THISCALL_WRAPPER(basic_string_char__Tidy, 8)
......@@ -431,6 +436,11 @@ basic_string_char* __thiscall basic_string_char_ctor_cstr_len_alloc(
return this;
}
basic_string_char* basic_string_char_ctor_cstr_len(basic_string_char *this, const char *str, MSVCP_size_t len)
{
return basic_string_char_ctor_cstr_len_alloc(this, str, len, NULL);
}
/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@IIABV?$allocator@D@1@@Z */
/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@D@1@@Z */
DEFINE_THISCALL_WRAPPER(basic_string_char_ctor_substr_alloc, 20)
......@@ -458,7 +468,7 @@ basic_string_char* __thiscall basic_string_char_ctor_cstr_alloc(
return this;
}
basic_string_char* __thiscall MSVCP_basic_string_char_ctor_cstr(
basic_string_char* basic_string_char_ctor_cstr(
basic_string_char *this, const char *str)
{
return basic_string_char_ctor_cstr_alloc(this, str, NULL);
......@@ -515,8 +525,8 @@ basic_string_char* __thiscall basic_string_char_ctor_alloc(
/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z */
/* ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_copy_ctor, 8)
basic_string_char* __thiscall MSVCP_basic_string_char_copy_ctor(
DEFINE_THISCALL_WRAPPER(basic_string_char_copy_ctor, 8)
basic_string_char* __thiscall basic_string_char_copy_ctor(
basic_string_char *this, const basic_string_char *copy)
{
TRACE("%p %p\n", this, copy);
......@@ -528,8 +538,8 @@ basic_string_char* __thiscall MSVCP_basic_string_char_copy_ctor(
/* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ */
/* ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ */
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_dtor, 4)
void __thiscall MSVCP_basic_string_char_dtor(basic_string_char *this)
DEFINE_THISCALL_WRAPPER(basic_string_char_dtor, 4)
void __thiscall basic_string_char_dtor(basic_string_char *this)
{
TRACE("%p\n", this);
basic_string_char__Tidy(this, TRUE);
......@@ -1233,7 +1243,7 @@ basic_string_char* __cdecl basic_string_char_concatenate(basic_string_char *ret,
{
TRACE("%p %p\n", left, right);
MSVCP_basic_string_char_copy_ctor(ret, left);
basic_string_char_copy_ctor(ret, left);
basic_string_char_append(ret, right);
return ret;
}
......@@ -1247,7 +1257,7 @@ basic_string_char* __cdecl basic_string_char_concatenate_bstr_ch(basic_string_ch
{
TRACE("%p %c\n", left, right);
MSVCP_basic_string_char_copy_ctor(ret, left);
basic_string_char_copy_ctor(ret, left);
basic_string_char_append_ch(ret, right);
return ret;
}
......@@ -1261,7 +1271,7 @@ basic_string_char* __cdecl basic_string_char_concatenate_bstr_cstr(basic_string_
{
TRACE("%p %s\n", left, debugstr_a(right));
MSVCP_basic_string_char_copy_ctor(ret, left);
basic_string_char_copy_ctor(ret, left);
basic_string_char_append_cstr(ret, right);
return ret;
}
......@@ -1647,8 +1657,8 @@ String_reverse_iterator_char* __thiscall basic_string_char_rend(
/* ?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
/* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ */
/* ?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAPEBDXZ */
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_c_str, 4)
const char* __thiscall MSVCP_basic_string_char_c_str(const basic_string_char *this)
DEFINE_THISCALL_WRAPPER(basic_string_char_c_str, 4)
const char* __thiscall basic_string_char_c_str(const basic_string_char *this)
{
TRACE("%p\n", this);
return this->ptr;
......@@ -1659,7 +1669,7 @@ const char* __thiscall MSVCP_basic_string_char_c_str(const basic_string_char *th
/* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ */
/* ?length@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA_KXZ */
DEFINE_THISCALL_WRAPPER(basic_string_char_length, 4)
MSVCP_size_t __thiscall basic_string_char_length(basic_string_char *this)
MSVCP_size_t __thiscall basic_string_char_length(const basic_string_char *this)
{
TRACE("%p\n", this);
return this->size;
......@@ -1847,6 +1857,11 @@ void __thiscall basic_string_wchar__Eos(basic_string_wchar *this, MSVCP_size_t l
this->ptr[len] = 0;
}
void basic_string_wchar_clear(basic_string_wchar *this)
{
basic_string_wchar__Eos(this, 0);
}
/* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAEX_N@Z */
/* ?_Tidy@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AEAAX_N@Z */
DEFINE_THISCALL_WRAPPER(basic_string_wchar__Tidy, 8)
......@@ -2127,6 +2142,11 @@ basic_string_wchar* __thiscall basic_string_wchar_ctor_cstr_len_alloc(
return this;
}
basic_string_wchar* basic_string_wchar_ctor_cstr_len(basic_string_wchar *this, const wchar_t *str, MSVCP_size_t len)
{
return basic_string_wchar_ctor_cstr_len_alloc(this, str, len, NULL);
}
/* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@IIABV?$allocator@G@1@@Z */
/* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@_K1AEBV?$allocator@G@1@@Z */
DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor_substr_alloc, 20)
......@@ -2154,6 +2174,11 @@ basic_string_wchar* __thiscall basic_string_wchar_ctor_cstr_alloc(
return this;
}
basic_string_wchar* basic_string_wchar_ctor_cstr(basic_string_wchar *this, const wchar_t *str)
{
return basic_string_wchar_ctor_cstr_alloc(this, str, NULL);
}
/* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IGABV?$allocator@G@1@@Z */
/* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@_KGAEBV?$allocator@G@1@@Z */
DEFINE_THISCALL_WRAPPER(basic_string_wchar_ctor_ch_alloc, 16)
......@@ -2205,8 +2230,8 @@ basic_string_wchar* __thiscall basic_string_wchar_ctor_alloc(
/* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@ABV01@@Z */
/* ??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV01@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_copy_ctor, 8)
basic_string_wchar* __thiscall MSVCP_basic_string_wchar_copy_ctor(
DEFINE_THISCALL_WRAPPER(basic_string_wchar_copy_ctor, 8)
basic_string_wchar* __thiscall basic_string_wchar_copy_ctor(
basic_string_wchar *this, const basic_string_wchar *copy)
{
TRACE("%p %p\n", this, copy);
......@@ -2218,8 +2243,8 @@ basic_string_wchar* __thiscall MSVCP_basic_string_wchar_copy_ctor(
/* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@XZ */
/* ??1?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@XZ */
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_dtor, 4)
void __thiscall MSVCP_basic_string_wchar_dtor(basic_string_wchar *this)
DEFINE_THISCALL_WRAPPER(basic_string_wchar_dtor, 4)
void __thiscall basic_string_wchar_dtor(basic_string_wchar *this)
{
TRACE("%p\n", this);
basic_string_wchar__Tidy(this, TRUE);
......@@ -2923,7 +2948,7 @@ basic_string_wchar* __cdecl basic_string_wchar_concatenate(basic_string_wchar *r
{
TRACE("%p %p\n", left, right);
MSVCP_basic_string_wchar_copy_ctor(ret, left);
basic_string_wchar_copy_ctor(ret, left);
basic_string_wchar_append(ret, right);
return ret;
}
......@@ -2937,7 +2962,7 @@ basic_string_wchar* __cdecl basic_string_wchar_concatenate_bstr_ch(basic_string_
{
TRACE("%p %c\n", left, right);
MSVCP_basic_string_wchar_copy_ctor(ret, left);
basic_string_wchar_copy_ctor(ret, left);
basic_string_wchar_append_ch(ret, right);
return ret;
}
......@@ -2951,7 +2976,7 @@ basic_string_wchar* __cdecl basic_string_wchar_concatenate_bstr_cstr(basic_strin
{
TRACE("%p %s\n", left, debugstr_w(right));
MSVCP_basic_string_wchar_copy_ctor(ret, left);
basic_string_wchar_copy_ctor(ret, left);
basic_string_wchar_append_cstr(ret, right);
return ret;
}
......@@ -3337,8 +3362,8 @@ String_reverse_iterator_wchar* __thiscall basic_string_wchar_rend(
/* ?c_str@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
/* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEPBGXZ */
/* ?data@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAPEBGXZ */
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_c_str, 4)
const wchar_t* __thiscall MSVCP_basic_string_wchar_c_str(const basic_string_wchar *this)
DEFINE_THISCALL_WRAPPER(basic_string_wchar_c_str, 4)
const wchar_t* __thiscall basic_string_wchar_c_str(const basic_string_wchar *this)
{
TRACE("%p\n", this);
return this->ptr;
......@@ -3349,7 +3374,7 @@ const wchar_t* __thiscall MSVCP_basic_string_wchar_c_str(const basic_string_wcha
/* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEIXZ */
/* ?length@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA_KXZ */
DEFINE_THISCALL_WRAPPER(basic_string_wchar_length, 4)
MSVCP_size_t __thiscall basic_string_wchar_length(basic_string_wchar *this)
MSVCP_size_t __thiscall basic_string_wchar_length(const basic_string_wchar *this)
{
TRACE("%p\n", this);
return this->size;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment