Commit b09125ad authored by Piotr Caban's avatar Piotr Caban Committed by Alexandre Julliard

msvcp90: Added basic_string<char>::compare implementation.

parent acf0cea8
......@@ -3114,18 +3114,18 @@
@ stub -arch=win64 ?close@?$messages@G@std@@QEBAXH@Z
@ stub -arch=win32 ?close@?$messages@_W@std@@QBEXH@Z
@ stub -arch=win64 ?close@?$messages@_W@std@@QEBAXH@Z
@ stub -arch=win32 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHABV12@@Z
@ stub -arch=win64 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHAEBV12@@Z
@ stub -arch=win32 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@@Z
@ stub -arch=win64 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHPEBD@Z
@ stub -arch=win32 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@II@Z
@ stub -arch=win64 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@00@Z
@ stub -arch=win32 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBD@Z
@ stub -arch=win64 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@@Z
@ stub -arch=win32 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z
@ stub -arch=win64 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD0@Z
@ stub -arch=win32 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z
@ stub -arch=win64 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD@Z
@ thiscall -arch=win32 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHABV12@@Z(ptr ptr) MSVCP_basic_string_char_compare
@ cdecl -arch=win64 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHAEBV12@@Z(ptr ptr) MSVCP_basic_string_char_compare
@ thiscall -arch=win32 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@@Z(ptr long long ptr) MSVCP_basic_string_char_compare_substr
@ cdecl -arch=win64 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHPEBD@Z(ptr ptr) MSVCP_basic_string_char_compare_cstr
@ thiscall -arch=win32 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@II@Z(ptr long long ptr long long) MSVCP_basic_string_char_compare_substr_substr
@ cdecl -arch=win64 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@00@Z(ptr long long ptr long long) MSVCP_basic_string_char_compare_substr_substr
@ thiscall -arch=win32 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBD@Z(ptr long long ptr) MSVCP_basic_string_char_compare_substr_cstr
@ cdecl -arch=win64 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@@Z(ptr long long ptr) MSVCP_basic_string_char_compare_substr
@ thiscall -arch=win32 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z(ptr long long ptr long) MSVCP_basic_string_char_compare_substr_cstr_len
@ cdecl -arch=win64 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD0@Z(ptr long long ptr long) MSVCP_basic_string_char_compare_substr_cstr_len
@ thiscall -arch=win32 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z(ptr ptr) MSVCP_basic_string_char_compare_cstr
@ cdecl -arch=win64 ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD@Z(ptr long long ptr) MSVCP_basic_string_char_compare_substr_cstr
@ stub -arch=win32 ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHABV12@@Z
@ stub -arch=win64 ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBAHAEBV12@@Z
@ stub -arch=win32 ?compare@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBEHIIABV12@@Z
......
......@@ -802,6 +802,96 @@ basic_string_char* __thiscall MSVCP_basic_string_char_append(
0, MSVCP_basic_string_char_npos);
}
/* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBDI@Z */
/* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD0@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr_len, 20)
int __thiscall MSVCP_basic_string_char_compare_substr_cstr_len(
basic_string_char *this, size_t pos, size_t num,
const char *str, size_t count)
{
int ans;
TRACE("%p %lu %lu %s %lu\n", this, (unsigned long)pos,
(unsigned long)num, str, (unsigned long)count);
if(this->size < pos)
MSVCP__String_base_Xran();
if(pos+num > this->size)
num = this->size-pos;
ans = MSVCP_char_traits_char_compare(basic_string_char_ptr(this)+pos,
str, num>count ? count : num);
if(ans)
return ans;
if(num > count)
ans = 1;
else if(num < count)
ans = -1;
return ans;
}
/* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIPBD@Z */
/* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0PEBD@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_cstr, 16)
int __thiscall MSVCP_basic_string_char_compare_substr_cstr(basic_string_char *this,
size_t pos, size_t num, const char *str)
{
return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
str, MSVCP_char_traits_char_length(str));
}
/* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHPBD@Z */
/* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHPEBD@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_cstr, 8)
int __thiscall MSVCP_basic_string_char_compare_cstr(
basic_string_char *this, const char *str)
{
return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size,
str, MSVCP_char_traits_char_length(str));
}
/* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@II@Z */
/* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@00@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr_substr, 24)
int __thiscall MSVCP_basic_string_char_compare_substr_substr(
basic_string_char *this, size_t pos, size_t num,
basic_string_char *compare, size_t off, size_t count)
{
TRACE("%p %lu %lu %p %lu %lu\n", this, (unsigned long)pos, (unsigned long)num,
compare, (unsigned long)off, (unsigned long)count);
if(compare->size < off)
MSVCP__String_base_Xran();
if(off+count > compare->size)
count = compare->size-off;
return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
basic_string_char_ptr(compare)+off, count);
}
/* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHIIABV12@@Z */
/* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAH_K0AEBV12@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare_substr, 16)
int __thiscall MSVCP_basic_string_char_compare_substr(
basic_string_char *this, size_t pos, size_t num,
basic_string_char *compare)
{
return MSVCP_basic_string_char_compare_substr_cstr_len(this, pos, num,
basic_string_char_ptr(compare), compare->size);
}
/* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEHABV12@@Z */
/* ?compare@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBAHAEBV12@@Z */
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_compare, 8)
int __thiscall MSVCP_basic_string_char_compare(
basic_string_char *this, basic_string_char *compare)
{
return MSVCP_basic_string_char_compare_substr_cstr_len(this, 0, this->size,
basic_string_char_ptr(compare), compare->size);
}
/* basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t>> */
/* ?npos@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@2IB */
......
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