Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
679b0d48
Commit
679b0d48
authored
Jun 07, 2012
by
Piotr Caban
Committed by
Alexandre Julliard
Jun 07, 2012
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msvcp90: Added codecvt_base class implementation.
parent
85d49c58
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
139 additions
and
19 deletions
+139
-19
locale.c
dlls/msvcp90/locale.c
+120
-0
msvcp90.spec
dlls/msvcp90/msvcp90.spec
+19
-19
No files found.
dlls/msvcp90/locale.c
View file @
679b0d48
...
...
@@ -109,6 +109,10 @@ typedef struct {
typedef
struct
{
locale_facet
facet
;
}
codecvt_base
;
typedef
struct
{
locale_facet
facet
;
const
char
*
grouping
;
char
dp
;
char
sep
;
...
...
@@ -2439,6 +2443,117 @@ const wchar_t* __thiscall ctype_wchar_scan_not(const ctype_wchar *this,
return
call_ctype_wchar_do_scan_not
(
this
,
mask
,
first
,
last
);
}
/* ??_7codecvt_base@std@@6B@ */
extern
const
vtable_ptr
MSVCP_codecvt_base_vtable
;
/* ??0codecvt_base@std@@QAE@I@Z */
/* ??0codecvt_base@std@@QEAA@_K@Z */
DEFINE_THISCALL_WRAPPER
(
codecvt_base_ctor_refs
,
8
)
codecvt_base
*
__thiscall
codecvt_base_ctor_refs
(
codecvt_base
*
this
,
MSVCP_size_t
refs
)
{
TRACE
(
"(%p %lu)
\n
"
,
this
,
refs
);
locale_facet_ctor_refs
(
&
this
->
facet
,
refs
);
this
->
facet
.
vtable
=
&
MSVCP_codecvt_base_vtable
;
return
this
;
}
/* ??_Fcodecvt_base@std@@QAEXXZ */
/* ??_Fcodecvt_base@std@@QEAAXXZ */
DEFINE_THISCALL_WRAPPER
(
codecvt_base_ctor
,
4
)
codecvt_base
*
__thiscall
codecvt_base_ctor
(
codecvt_base
*
this
)
{
return
codecvt_base_ctor_refs
(
this
,
0
);
}
/* ??1codecvt_base@std@@UAE@XZ */
/* ??1codecvt_base@std@@UEAA@XZ */
DEFINE_THISCALL_WRAPPER
(
codecvt_base_dtor
,
4
)
void
__thiscall
codecvt_base_dtor
(
codecvt_base
*
this
)
{
TRACE
(
"(%p)
\n
"
,
this
);
locale_facet_dtor
(
&
this
->
facet
);
}
DEFINE_THISCALL_WRAPPER
(
MSVCP_codecvt_base_vector_dtor
,
8
)
codecvt_base
*
__thiscall
MSVCP_codecvt_base_vector_dtor
(
codecvt_base
*
this
,
unsigned
int
flags
)
{
TRACE
(
"(%p %x)
\n
"
,
this
,
flags
);
if
(
flags
&
2
)
{
/* we have an array, with the number of elements stored before the first object */
int
i
,
*
ptr
=
(
int
*
)
this
-
1
;
for
(
i
=*
ptr
-
1
;
i
>=
0
;
i
--
)
codecvt_base_dtor
(
this
+
i
);
MSVCRT_operator_delete
(
ptr
);
}
else
{
codecvt_base_dtor
(
this
);
if
(
flags
&
1
)
MSVCRT_operator_delete
(
this
);
}
return
this
;
}
/* ?do_always_noconv@codecvt_base@std@@MBE_NXZ */
/* ?do_always_noconv@codecvt_base@std@@MEBA_NXZ */
#define call_codecvt_base_do_always_noconv(this) CALL_VTBL_FUNC(this, 4, \
MSVCP_bool, (const codecvt_base*), (this))
DEFINE_THISCALL_WRAPPER
(
codecvt_base_do_always_noconv
,
4
)
MSVCP_bool
__thiscall
codecvt_base_do_always_noconv
(
const
codecvt_base
*
this
)
{
TRACE
(
"(%p)
\n
"
,
this
);
return
TRUE
;
}
/* ?always_noconv@codecvt_base@std@@QBE_NXZ */
/* ?always_noconv@codecvt_base@std@@QEBA_NXZ */
DEFINE_THISCALL_WRAPPER
(
codecvt_base_always_noconv
,
4
)
MSVCP_bool
__thiscall
codecvt_base_always_noconv
(
const
codecvt_base
*
this
)
{
TRACE
(
"(%p)
\n
"
,
this
);
return
call_codecvt_base_do_always_noconv
(
this
);
}
/* ?do_max_length@codecvt_base@std@@MBEHXZ */
/* ?do_max_length@codecvt_base@std@@MEBAHXZ */
#define call_codecvt_base_do_max_length(this) CALL_VTBL_FUNC(this, 8, \
int, (const codecvt_base*), (this))
DEFINE_THISCALL_WRAPPER
(
codecvt_base_do_max_length
,
4
)
int
__thiscall
codecvt_base_do_max_length
(
const
codecvt_base
*
this
)
{
TRACE
(
"(%p)
\n
"
,
this
);
return
1
;
}
/* ?max_length@codecvt_base@std@@QBEHXZ */
/* ?max_length@codecvt_base@std@@QEBAHXZ */
DEFINE_THISCALL_WRAPPER
(
codecvt_base_max_length
,
4
)
int
__thiscall
codecvt_base_max_length
(
const
codecvt_base
*
this
)
{
TRACE
(
"(%p)
\n
"
,
this
);
return
call_codecvt_base_do_max_length
(
this
);
}
/* ?do_encoding@codecvt_base@std@@MBEHXZ */
/* ?do_encoding@codecvt_base@std@@MEBAHXZ */
#define call_codecvt_base_do_encoding(this) CALL_VTBL_FUNC(this, 12, \
int, (const codecvt_base*), (this))
DEFINE_THISCALL_WRAPPER
(
codecvt_base_do_encoding
,
4
)
int
__thiscall
codecvt_base_do_encoding
(
const
codecvt_base
*
this
)
{
TRACE
(
"(%p)
\n
"
,
this
);
return
1
;
}
/* ?encoding@codecvt_base@std@@QBEHXZ */
/* ?encoding@codecvt_base@std@@QEBAHXZ */
DEFINE_THISCALL_WRAPPER
(
codecvt_base_encoding
,
4
)
int
__thiscall
codecvt_base_encoding
(
const
codecvt_base
*
this
)
{
TRACE
(
"(%p)
\n
"
,
this
);
return
call_codecvt_base_do_encoding
(
this
);
}
/* ?id@?$numpunct@D@std@@2V0locale@2@A */
locale_id
numpunct_char_id
=
{
0
};
...
...
@@ -4223,6 +4338,7 @@ DEFINE_RTTI_DATA(ctype_base, 0, 1, &locale_facet_rtti_base_descriptor, NULL, NUL
DEFINE_RTTI_DATA
(
ctype_char
,
0
,
2
,
&
ctype_base_rtti_base_descriptor
,
&
locale_facet_rtti_base_descriptor
,
NULL
,
".?AV?$ctype@D@std@@"
);
DEFINE_RTTI_DATA
(
ctype_wchar
,
0
,
2
,
&
ctype_base_rtti_base_descriptor
,
&
locale_facet_rtti_base_descriptor
,
NULL
,
".?AV?$ctype@_W@std@@"
);
DEFINE_RTTI_DATA
(
ctype_short
,
0
,
2
,
&
ctype_base_rtti_base_descriptor
,
&
locale_facet_rtti_base_descriptor
,
NULL
,
".?AV?$ctype@G@std@@"
);
DEFINE_RTTI_DATA
(
codecvt_base
,
0
,
1
,
&
locale_facet_rtti_base_descriptor
,
NULL
,
NULL
,
".?AVcodecvt_base@std@@"
);
DEFINE_RTTI_DATA
(
numpunct_char
,
0
,
1
,
&
locale_facet_rtti_base_descriptor
,
NULL
,
NULL
,
".?AV?$numpunct@D@std@@"
);
DEFINE_RTTI_DATA
(
numpunct_wchar
,
0
,
1
,
&
locale_facet_rtti_base_descriptor
,
NULL
,
NULL
,
".?AV?$numpunct@_W@std@@"
);
DEFINE_RTTI_DATA
(
numpunct_short
,
0
,
1
,
&
locale_facet_rtti_base_descriptor
,
NULL
,
NULL
,
".?AV?$numpunct@G@std@@"
);
...
...
@@ -4288,6 +4404,10 @@ void __asm_dummy_vtables(void) {
VTABLE_ADD_FUNC
(
ctype_wchar_do_narrow
)
VTABLE_ADD_FUNC
(
ctype_wchar_do_narrow_ch
)
VTABLE_ADD_FUNC
(
ctype_wchar__Do_narrow_s
));
__ASM_VTABLE
(
codecvt_base
,
VTABLE_ADD_FUNC
(
codecvt_base_do_always_noconv
)
VTABLE_ADD_FUNC
(
codecvt_base_do_max_length
)
VTABLE_ADD_FUNC
(
codecvt_base_do_encoding
));
__ASM_VTABLE
(
numpunct_char
,
VTABLE_ADD_FUNC
(
numpunct_char_do_decimal_point
)
VTABLE_ADD_FUNC
(
numpunct_char_do_thousands_sep
)
...
...
dlls/msvcp90/msvcp90.spec
View file @
679b0d48
...
...
@@ -1092,8 +1092,8 @@
@ stub -arch=win64 ??0_UShinit@std@@QEAA@XZ
@ stub -arch=win32 ??0_Winit@std@@QAE@XZ
@ stub -arch=win64 ??0_Winit@std@@QEAA@XZ
@
stub -arch=win32 ??0codecvt_base@std@@QAE@I@Z
@
stub -arch=win64 ??0codecvt_base@std@@QEAA@_K@Z
@
thiscall -arch=win32 ??0codecvt_base@std@@QAE@I@Z(ptr long) codecvt_base_ctor_refs
@
cdecl -arch=win64 ??0codecvt_base@std@@QEAA@_K@Z(ptr long) codecvt_base_ctor_refs
@ thiscall -arch=win32 ??0ctype_base@std@@QAE@I@Z(ptr long) ctype_base_ctor_refs
@ cdecl -arch=win64 ??0ctype_base@std@@QEAA@_K@Z(ptr long) ctype_base_ctor_refs
@ thiscall -arch=win32 ??0facet@locale@std@@IAE@I@Z(ptr long) locale_facet_ctor_refs
...
...
@@ -1326,8 +1326,8 @@
@ stub -arch=win64 ??1_UShinit@std@@QEAA@XZ
@ stub -arch=win32 ??1_Winit@std@@QAE@XZ
@ stub -arch=win64 ??1_Winit@std@@QEAA@XZ
@
stub -arch=win32 ??1codecvt_base@std@@UAE@XZ
@
stub -arch=win64 ??1codecvt_base@std@@UEAA@XZ
@
thiscall -arch=win32 ??1codecvt_base@std@@UAE@XZ(ptr) codecvt_base_dtor
@
cdecl -arch=win64 ??1codecvt_base@std@@UEAA@XZ(ptr) codecvt_base_dtor
@ thiscall -arch=win32 ??1ctype_base@std@@UAE@XZ(ptr) ctype_base_dtor
@ cdecl -arch=win64 ??1ctype_base@std@@UEAA@XZ(ptr) ctype_base_dtor
@ thiscall -arch=win32 ??1facet@locale@std@@UAE@XZ(ptr) locale_facet_dtor
...
...
@@ -1858,7 +1858,7 @@
# extern ??_7?$time_put@GV?$ostreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@6B@
# extern ??_7?$time_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@6B@
@ extern ??_7_Locimp@locale@std@@6B@ MSVCP_locale__Locimp_vtable
# extern ??_7codecvt_base@std@@6B@
@ extern ??_7codecvt_base@std@@6B@ MSVCP_codecvt_base_vtable
@ extern ??_7ctype_base@std@@6B@ MSVCP_ctype_base_vtable
@ extern ??_7ios_base@std@@6B@ MSVCP_ios_base_vtable
# extern ??_7messages_base@std@@6B@
...
...
@@ -2081,8 +2081,8 @@
@ cdecl -arch=win64 ??_F_Locinfo@std@@QEAAXXZ(ptr) _Locinfo_ctor
@ thiscall -arch=win32 ??_F_Timevec@std@@QAEXXZ(ptr) _Timevec_ctor
@ cdecl -arch=win64 ??_F_Timevec@std@@QEAAXXZ(ptr) _Timevec_ctor
@
stub -arch=win32 ??_Fcodecvt_base@std@@QAEXXZ
@
stub -arch=win64 ??_Fcodecvt_base@std@@QEAAXXZ
@
thiscall -arch=win32 ??_Fcodecvt_base@std@@QAEXXZ(ptr) codecvt_base_ctor
@
cdecl -arch=win64 ??_Fcodecvt_base@std@@QEAAXXZ(ptr) codecvt_base_ctor
@ thiscall -arch=win32 ??_Fctype_base@std@@QAEXXZ(ptr) ctype_base_ctor
@ cdecl -arch=win64 ??_Fctype_base@std@@QEAAXXZ(ptr) ctype_base_ctor
@ thiscall -arch=win32 ??_Ffacet@locale@std@@QAEXXZ(ptr) locale_facet_ctor
...
...
@@ -2914,8 +2914,8 @@
@ cdecl -arch=win64 ?allocate@?$allocator@_W@std@@QEAAPEA_W_K@Z(ptr long) MSVCP_allocator_wchar_allocate
@ thiscall -arch=win32 ?allocate@?$allocator@_W@std@@QAEPA_WIPBX@Z(ptr long ptr) MSVCP_allocator_wchar_allocate_hint
@ cdecl -arch=win64 ?allocate@?$allocator@_W@std@@QEAAPEA_W_KPEBX@Z(ptr long ptr) MSVCP_allocator_wchar_allocate_hint
@
stub -arch=win32 ?always_noconv@codecvt_base@std@@QBE_NXZ
@
stub -arch=win64 ?always_noconv@codecvt_base@std@@QEBA_NXZ
@
thiscall -arch=win32 ?always_noconv@codecvt_base@std@@QBE_NXZ(ptr) codecvt_base_always_noconv
@
cdecl -arch=win64 ?always_noconv@codecvt_base@std@@QEBA_NXZ(ptr) codecvt_base_always_noconv
@ thiscall -arch=win32 ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@@Z(ptr ptr) MSVCP_basic_string_char_append
@ cdecl -arch=win64 ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAAEAV12@AEBV12@@Z(ptr ptr) MSVCP_basic_string_char_append
@ thiscall -arch=win32 ?append@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z(ptr ptr long long) MSVCP_basic_string_char_append_substr
...
...
@@ -3288,8 +3288,8 @@
@ stub -arch=win64 ?do_always_noconv@?$codecvt@GDH@std@@MEBA_NXZ
@ stub -arch=win32 ?do_always_noconv@?$codecvt@_WDH@std@@MBE_NXZ
@ stub -arch=win64 ?do_always_noconv@?$codecvt@_WDH@std@@MEBA_NXZ
@
stub -arch=win32 ?do_always_noconv@codecvt_base@std@@MBE_NXZ
@
stub -arch=win64 ?do_always_noconv@codecvt_base@std@@MEBA_NXZ
@
thiscall -arch=win32 ?do_always_noconv@codecvt_base@std@@MBE_NXZ(ptr) codecvt_base_do_always_noconv
@
cdecl -arch=win64 ?do_always_noconv@codecvt_base@std@@MEBA_NXZ(ptr) codecvt_base_do_always_noconv
@ stub -arch=win32 ?do_close@?$messages@D@std@@MBEXH@Z
@ stub -arch=win64 ?do_close@?$messages@D@std@@MEBAXH@Z
@ stub -arch=win32 ?do_close@?$messages@G@std@@MBEXH@Z
...
...
@@ -3326,8 +3326,8 @@
@ cdecl -arch=win64 ?do_decimal_point@?$numpunct@G@std@@MEBAGXZ(ptr) numpunct_wchar_do_decimal_point
@ thiscall -arch=win32 ?do_decimal_point@?$numpunct@_W@std@@MBE_WXZ(ptr) numpunct_wchar_do_decimal_point
@ cdecl -arch=win64 ?do_decimal_point@?$numpunct@_W@std@@MEBA_WXZ(ptr) numpunct_wchar_do_decimal_point
@
stub -arch=win32 ?do_encoding@codecvt_base@std@@MBEHXZ
@
stub -arch=win64 ?do_encoding@codecvt_base@std@@MEBAHXZ
@
thiscall -arch=win32 ?do_encoding@codecvt_base@std@@MBEHXZ(ptr) codecvt_base_do_encoding
@
cdecl -arch=win64 ?do_encoding@codecvt_base@std@@MEBAHXZ(ptr) codecvt_base_do_encoding
@ thiscall -arch=win32 ?do_falsename@?$numpunct@D@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ(ptr ptr) numpunct_char_do_falsename
@ cdecl -arch=win64 ?do_falsename@?$numpunct@D@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ(ptr ptr) numpunct_char_do_falsename
@ thiscall -arch=win32 ?do_falsename@?$numpunct@G@std@@MBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ(ptr ptr) numpunct_wchar_do_falsename
...
...
@@ -3496,8 +3496,8 @@
@ stub -arch=win64 ?do_max_length@?$codecvt@GDH@std@@MEBAHXZ
@ stub -arch=win32 ?do_max_length@?$codecvt@_WDH@std@@MBEHXZ
@ stub -arch=win64 ?do_max_length@?$codecvt@_WDH@std@@MEBAHXZ
@
stub -arch=win32 ?do_max_length@codecvt_base@std@@MBEHXZ
@
stub -arch=win64 ?do_max_length@codecvt_base@std@@MEBAHXZ
@
thiscall -arch=win32 ?do_max_length@codecvt_base@std@@MBEHXZ(ptr) codecvt_base_do_max_length
@
cdecl -arch=win64 ?do_max_length@codecvt_base@std@@MEBAHXZ(ptr) codecvt_base_do_max_length
@ thiscall -arch=win32 ?do_narrow@?$ctype@D@std@@MBEDDD@Z(ptr long long) ctype_char_do_narrow_ch
@ cdecl -arch=win64 ?do_narrow@?$ctype@D@std@@MEBADDD@Z(ptr long long) ctype_char_do_narrow_ch
@ thiscall -arch=win32 ?do_narrow@?$ctype@D@std@@MBEPBDPBD0DPAD@Z(ptr ptr ptr long ptr) ctype_char_do_narrow
...
...
@@ -3705,8 +3705,8 @@
@ thiscall -arch=win32 ?empty@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE_NXZ(ptr) MSVCP_basic_string_wchar_empty
@ cdecl -arch=win64 ?empty@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA_NXZ(ptr) MSVCP_basic_string_wchar_empty
@ stub ?empty@locale@std@@SA?AV12@XZ
@
stub -arch=win32 ?encoding@codecvt_base@std@@QBEHXZ
@
stub -arch=win64 ?encoding@codecvt_base@std@@QEBAHXZ
@
thiscall -arch=win32 ?encoding@codecvt_base@std@@QBEHXZ(ptr) codecvt_base_encoding
@
cdecl -arch=win64 ?encoding@codecvt_base@std@@QEBAHXZ(ptr) codecvt_base_encoding
@ thiscall -arch=win32 ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ(ptr ptr) MSVCP_basic_string_char_end
@ cdecl -arch=win64 ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ(ptr ptr) MSVCP_basic_string_char_end
@ thiscall -arch=win32 ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ(ptr ptr) MSVCP_basic_string_char_end
...
...
@@ -4507,8 +4507,8 @@
@ extern ?max_exponent@?$numeric_limits@N@std@@2HB std_numeric_limits_double_max_exponent
@ extern ?max_exponent@?$numeric_limits@O@std@@2HB std_numeric_limits_long_double_max_exponent
@ extern ?max_exponent@_Num_base@std@@2HB std_Num_base_max_exponent
@
stub -arch=win32 ?max_length@codecvt_base@std@@QBEHXZ
@
stub -arch=win64 ?max_length@codecvt_base@std@@QEBAHXZ
@
thiscall -arch=win32 ?max_length@codecvt_base@std@@QBEHXZ(ptr) codecvt_base_max_length
@
cdecl -arch=win64 ?max_length@codecvt_base@std@@QEBAHXZ(ptr) codecvt_base_max_length
@ thiscall -arch=win32 ?max_size@?$allocator@D@std@@QBEIXZ(ptr) MSVCP_allocator_char_max_size
@ cdecl -arch=win64 ?max_size@?$allocator@D@std@@QEBA_KXZ(ptr) MSVCP_allocator_char_max_size
@ thiscall -arch=win32 ?max_size@?$allocator@G@std@@QBEIXZ(ptr) MSVCP_allocator_short_max_size
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment