msvcp90: Fix class functions invocation on 64bit systems.
This commit is contained in:
parent
fdddb60cdc
commit
c4b8793996
|
@ -1094,40 +1094,40 @@ locale __thiscall basic_streambuf_char_pubimbue(basic_streambuf_char *this, cons
|
|||
|
||||
/* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */
|
||||
/* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(basic_streambuf_char_pubseekoff, 16)
|
||||
fpos_int __thiscall basic_streambuf_char_pubseekoff(basic_streambuf_char *this, streamoff off, int way, int mode)
|
||||
DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 20)
|
||||
fpos_int* __thiscall basic_streambuf_char_pubseekoff(basic_streambuf_char *this,
|
||||
fpos_int *ret, streamoff off, int way, int mode)
|
||||
{
|
||||
fpos_int ret = { 0 }; /* FIXME */
|
||||
FIXME("(%p %lu %d %d) stub\n", this, off, way, mode);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */
|
||||
/* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(basic_streambuf_char_pubseekoff_old, 16)
|
||||
fpos_int __thiscall basic_streambuf_char_pubseekoff_old(basic_streambuf_char *this, streamoff off, unsigned int way, unsigned int mode)
|
||||
DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 20)
|
||||
fpos_int* __thiscall basic_streambuf_char_pubseekoff_old(basic_streambuf_char *this,
|
||||
fpos_int *ret, streamoff off, unsigned int way, unsigned int mode)
|
||||
{
|
||||
fpos_int ret = { 0 }; /* FIXME */
|
||||
FIXME("(%p %lu %d %d) stub\n", this, off, way, mode);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */
|
||||
/* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(basic_streambuf_char_pubseekpos, 32)
|
||||
fpos_int __thiscall basic_streambuf_char_pubseekpos(basic_streambuf_char *this, fpos_int pos, int mode)
|
||||
DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos, 36)
|
||||
fpos_int* __thiscall basic_streambuf_char_pubseekpos(basic_streambuf_char *this,
|
||||
fpos_int *ret, fpos_int pos, int mode)
|
||||
{
|
||||
fpos_int ret = { 0 }; /* FIXME */
|
||||
FIXME("(%p %s %d) stub\n", this, debugstr_fpos_int(&pos), mode);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */
|
||||
/* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(basic_streambuf_char_pubseekpos_old, 32)
|
||||
fpos_int __thiscall basic_streambuf_char_pubseekpos_old(basic_streambuf_char *this, fpos_int pos, unsigned int mode)
|
||||
DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos_old, 36)
|
||||
fpos_int* __thiscall basic_streambuf_char_pubseekpos_old(basic_streambuf_char *this,
|
||||
fpos_int *ret, fpos_int pos, unsigned int mode)
|
||||
{
|
||||
fpos_int ret = { 0 }; /* FIXME */
|
||||
FIXME("(%p %s %d) stub\n", this, debugstr_fpos_int(&pos), mode);
|
||||
return ret;
|
||||
}
|
||||
|
@ -1161,20 +1161,20 @@ int __thiscall basic_streambuf_char_sbumpc(basic_streambuf_char *this)
|
|||
|
||||
/* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */
|
||||
/* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(basic_streambuf_char_seekoff, 16)
|
||||
fpos_int __thiscall basic_streambuf_char_seekoff(basic_streambuf_char *this, streamoff off, int way, int mode)
|
||||
DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 20)
|
||||
fpos_int* __thiscall basic_streambuf_char_seekoff(basic_streambuf_char *this,
|
||||
fpos_int *ret, streamoff off, int way, int mode)
|
||||
{
|
||||
fpos_int ret = { 0 }; /* FIXME */
|
||||
FIXME("(%p %lu %d %d) stub\n", this, off, way, mode);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */
|
||||
/* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(basic_streambuf_char_seekpos, 32)
|
||||
fpos_int __thiscall basic_streambuf_char_seekpos(basic_streambuf_char *this, fpos_int pos, int mode)
|
||||
DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekpos, 36)
|
||||
fpos_int* __thiscall basic_streambuf_char_seekpos(basic_streambuf_char *this,
|
||||
fpos_int *ret, fpos_int pos, int mode)
|
||||
{
|
||||
fpos_int ret = { 0 }; /* FIXME */
|
||||
FIXME("(%p %s %d) stub\n", this, debugstr_fpos_int(&pos), mode);
|
||||
return ret;
|
||||
}
|
||||
|
@ -1574,10 +1574,9 @@ basic_ostream_char* __thiscall basic_ostream_char_seekp_fpos(basic_ostream_char
|
|||
|
||||
/* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ */
|
||||
/* ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(basic_ostream_char_tellp, 4)
|
||||
fpos_int __thiscall basic_ostream_char_tellp(basic_ostream_char *this)
|
||||
DEFINE_THISCALL_WRAPPER(basic_ostream_char_tellp, 8)
|
||||
fpos_int* __thiscall basic_ostream_char_tellp(basic_ostream_char *this, fpos_int *ret)
|
||||
{
|
||||
fpos_int ret = { 0 }; /* FIXME */
|
||||
FIXME("(%p) stub\n", this);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -487,10 +487,11 @@ _Collvec __cdecl _Getcoll(void)
|
|||
|
||||
/* ?_Getcoll@_Locinfo@std@@QBE?AU_Collvec@@XZ */
|
||||
/* ?_Getcoll@_Locinfo@std@@QEBA?AU_Collvec@@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(_Locinfo__Getcoll, 4)
|
||||
_Collvec __thiscall _Locinfo__Getcoll(const _Locinfo *this)
|
||||
DEFINE_THISCALL_WRAPPER(_Locinfo__Getcoll, 8)
|
||||
_Collvec* __thiscall _Locinfo__Getcoll(const _Locinfo *this, _Collvec *ret)
|
||||
{
|
||||
return _Getcoll();
|
||||
*ret = _Getcoll();
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* _Getctype */
|
||||
|
@ -518,10 +519,11 @@ _Ctypevec __cdecl _Getctype(void)
|
|||
|
||||
/* ?_Getctype@_Locinfo@std@@QBE?AU_Ctypevec@@XZ */
|
||||
/* ?_Getctype@_Locinfo@std@@QEBA?AU_Ctypevec@@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(_Locinfo__Getctype, 4)
|
||||
_Ctypevec __thiscall _Locinfo__Getctype(const _Locinfo *this)
|
||||
DEFINE_THISCALL_WRAPPER(_Locinfo__Getctype, 8)
|
||||
_Ctypevec* __thiscall _Locinfo__Getctype(const _Locinfo *this, _Ctypevec *ret)
|
||||
{
|
||||
return _Getctype();
|
||||
*ret = _Getctype();
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* _Getcvt */
|
||||
|
@ -540,10 +542,11 @@ _Cvtvec __cdecl _Getcvt(void)
|
|||
|
||||
/* ?_Getcvt@_Locinfo@std@@QBE?AU_Cvtvec@@XZ */
|
||||
/* ?_Getcvt@_Locinfo@std@@QEBA?AU_Cvtvec@@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(_Locinfo__Getcvt, 4)
|
||||
_Cvtvec __thiscall _Locinfo__Getcvt(const _Locinfo *this)
|
||||
DEFINE_THISCALL_WRAPPER(_Locinfo__Getcvt, 8)
|
||||
_Cvtvec* __thiscall _Locinfo__Getcvt(const _Locinfo *this, _Cvtvec *ret)
|
||||
{
|
||||
return _Getcvt();
|
||||
*ret = _Getcvt();
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?_Getdateorder@_Locinfo@std@@QBEHXZ */
|
||||
|
@ -623,27 +626,23 @@ const struct lconv* __thiscall _Locinfo__Getlconv(const _Locinfo *this)
|
|||
|
||||
/* ?_Getname@_Locinfo@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
/* ?_Getname@_Locinfo@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(_Locinfo__Getname, 4)
|
||||
basic_string_char __thiscall _Locinfo__Getname(const _Locinfo *this)
|
||||
DEFINE_THISCALL_WRAPPER(_Locinfo__Getname, 8)
|
||||
basic_string_char* __thiscall _Locinfo__Getname(const _Locinfo *this, basic_string_char *ret)
|
||||
{
|
||||
basic_string_char ret;
|
||||
|
||||
TRACE("(%p)\n", this);
|
||||
|
||||
MSVCP_basic_string_char_copy_ctor(&ret, &this->newlocname);
|
||||
MSVCP_basic_string_char_copy_ctor(ret, &this->newlocname);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?_Gettnames@_Locinfo@std@@QBE?AV_Timevec@2@XZ */
|
||||
/* ?_Gettnames@_Locinfo@std@@QEBA?AV_Timevec@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(_Locinfo__Gettnames, 4)
|
||||
_Timevec __thiscall _Locinfo__Gettnames(const _Locinfo *this)
|
||||
DEFINE_THISCALL_WRAPPER(_Locinfo__Gettnames, 8)
|
||||
_Timevec*__thiscall _Locinfo__Gettnames(const _Locinfo *this, _Timevec *ret)
|
||||
{
|
||||
_Timevec ret;
|
||||
|
||||
TRACE("(%p)\n", this);
|
||||
|
||||
_Timevec_ctor_timeptr(&ret, _Gettnames());
|
||||
_Timevec_ctor_timeptr(ret, _Gettnames());
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -665,7 +664,7 @@ DEFINE_THISCALL_WRAPPER(collate_char__Init, 8)
|
|||
void __thiscall collate_char__Init(collate *this, const _Locinfo *locinfo)
|
||||
{
|
||||
TRACE("(%p %p)\n", this, locinfo);
|
||||
this->coll = _Locinfo__Getcoll(locinfo);
|
||||
_Locinfo__Getcoll(locinfo, &this->coll);
|
||||
}
|
||||
|
||||
/* ??0?$collate@D@std@@IAE@PBDI@Z */
|
||||
|
@ -830,22 +829,20 @@ LONG __thiscall collate_char_hash(const collate *this,
|
|||
|
||||
/* ?do_transform@?$collate@D@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PBD0@Z */
|
||||
/* ?do_transform@?$collate@D@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PEBD0@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(collate_char_do_transform, 12)
|
||||
basic_string_char __thiscall collate_char_do_transform(const collate *this,
|
||||
const char *first, const char *last)
|
||||
DEFINE_THISCALL_WRAPPER(collate_char_do_transform, 16)
|
||||
basic_string_char* __thiscall collate_char_do_transform(const collate *this,
|
||||
basic_string_char *ret, const char *first, const char *last)
|
||||
{
|
||||
basic_string_char ret = {0}; /* FIXME */
|
||||
FIXME("(%p %p %p) stub\n", this, first, last);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?transform@?$collate@D@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PBD0@Z */
|
||||
/* ?transform@?$collate@D@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@PEBD0@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(collate_char_transform, 12)
|
||||
basic_string_char __thiscall collate_char_transform(const collate *this,
|
||||
const char *first, const char *last)
|
||||
DEFINE_THISCALL_WRAPPER(collate_char_transform, 16)
|
||||
basic_string_char* __thiscall collate_char_transform(const collate *this,
|
||||
basic_string_char *ret, const char *first, const char *last)
|
||||
{
|
||||
basic_string_char ret = {0}; /* FIXME */
|
||||
FIXME("(%p %p %p) stub\n", this, first, last);
|
||||
return ret;
|
||||
}
|
||||
|
@ -868,7 +865,7 @@ DEFINE_THISCALL_WRAPPER(collate_wchar__Init, 8)
|
|||
void __thiscall collate_wchar__Init(collate *this, const _Locinfo *locinfo)
|
||||
{
|
||||
TRACE("(%p %p)\n", this, locinfo);
|
||||
this->coll = _Locinfo__Getcoll(locinfo);
|
||||
_Locinfo__Getcoll(locinfo, &this->coll);
|
||||
}
|
||||
|
||||
/* ??0?$collate@_W@std@@IAE@PBDI@Z */
|
||||
|
@ -1103,11 +1100,10 @@ LONG __thiscall collate_wchar_hash(const collate *this,
|
|||
/* ?do_transform@?$collate@_W@std@@MEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@PEB_W0@Z */
|
||||
/* ?do_transform@?$collate@G@std@@MBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PBG0@Z */
|
||||
/* ?do_transform@?$collate@G@std@@MEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PEBG0@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(collate_wchar_do_transform, 12)
|
||||
basic_string_wchar __thiscall collate_wchar_do_transform(const collate *this,
|
||||
const wchar_t *first, const wchar_t *last)
|
||||
DEFINE_THISCALL_WRAPPER(collate_wchar_do_transform, 16)
|
||||
basic_string_wchar* __thiscall collate_wchar_do_transform(const collate *this,
|
||||
basic_string_wchar *ret, const wchar_t *first, const wchar_t *last)
|
||||
{
|
||||
basic_string_wchar ret = {0}; /* FIXME */
|
||||
FIXME("(%p %p %p) stub\n", this, first, last);
|
||||
return ret;
|
||||
}
|
||||
|
@ -1116,11 +1112,10 @@ basic_string_wchar __thiscall collate_wchar_do_transform(const collate *this,
|
|||
/* ?transform@?$collate@_W@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@PEB_W0@Z */
|
||||
/* ?transform@?$collate@G@std@@QBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PBG0@Z */
|
||||
/* ?transform@?$collate@G@std@@QEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@PEBG0@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(collate_wchar_transform, 12)
|
||||
basic_string_wchar __thiscall collate_wchar_transform(const collate *this,
|
||||
const wchar_t *first, const wchar_t *last)
|
||||
DEFINE_THISCALL_WRAPPER(collate_wchar_transform, 16)
|
||||
basic_string_wchar* __thiscall collate_wchar_transform(const collate *this,
|
||||
basic_string_wchar *ret, const wchar_t *first, const wchar_t *last)
|
||||
{
|
||||
basic_string_wchar ret = {0}; /* FIXME */
|
||||
FIXME("(%p %p %p) stub\n", this, first, last);
|
||||
return ret;
|
||||
}
|
||||
|
@ -1207,7 +1202,7 @@ DEFINE_THISCALL_WRAPPER(ctype_char__Init, 8)
|
|||
void __thiscall ctype_char__Init(ctype_char *this, _Locinfo *locinfo)
|
||||
{
|
||||
TRACE("(%p %p)\n", this, locinfo);
|
||||
this->ctype = _Locinfo__Getctype(locinfo);
|
||||
_Locinfo__Getctype(locinfo, &this->ctype);
|
||||
}
|
||||
|
||||
/* ?_Tidy@?$ctype@D@std@@IAEXXZ */
|
||||
|
@ -1724,8 +1719,8 @@ DEFINE_THISCALL_WRAPPER(ctype_wchar__Init, 8)
|
|||
void __thiscall ctype_wchar__Init(ctype_wchar *this, _Locinfo *locinfo)
|
||||
{
|
||||
TRACE("(%p %p)\n", this, locinfo);
|
||||
this->ctype = _Locinfo__Getctype(locinfo);
|
||||
this->cvt = _Locinfo__Getcvt(locinfo);
|
||||
_Locinfo__Getctype(locinfo, &this->ctype);
|
||||
_Locinfo__Getcvt(locinfo, &this->cvt);
|
||||
}
|
||||
|
||||
/* ??0?$ctype@_W@std@@QAE@ABV_Locinfo@1@I@Z */
|
||||
|
@ -2568,60 +2563,54 @@ char __thiscall numpunct_char_thousands_sep(const numpunct_char *this)
|
|||
|
||||
/* ?do_grouping@?$numpunct@D@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
/* ?do_grouping@?$numpunct@D@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(numpunct_char_do_grouping, 4)
|
||||
basic_string_char __thiscall numpunct_char_do_grouping(const numpunct_char *this)
|
||||
DEFINE_THISCALL_WRAPPER(numpunct_char_do_grouping, 8)
|
||||
basic_string_char* __thiscall numpunct_char_do_grouping(const numpunct_char *this, basic_string_char *ret)
|
||||
{
|
||||
basic_string_char ret = {0};
|
||||
FIXME("(%p) stub\n", this);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?grouping@?$numpunct@D@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
/* ?grouping@?$numpunct@D@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(numpunct_char_grouping, 4)
|
||||
basic_string_char __thiscall numpunct_char_grouping(const numpunct_char *this)
|
||||
DEFINE_THISCALL_WRAPPER(numpunct_char_grouping, 8)
|
||||
basic_string_char* __thiscall numpunct_char_grouping(const numpunct_char *this, basic_string_char *ret)
|
||||
{
|
||||
basic_string_char ret = {0};
|
||||
FIXME("(%p) stub\n", this);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?do_falsename@?$numpunct@D@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
/* ?do_falsename@?$numpunct@D@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(numpunct_char_do_falsename, 4)
|
||||
basic_string_char __thiscall numpunct_char_do_falsename(const numpunct_char *this)
|
||||
DEFINE_THISCALL_WRAPPER(numpunct_char_do_falsename, 8)
|
||||
basic_string_char* __thiscall numpunct_char_do_falsename(const numpunct_char *this, basic_string_char *ret)
|
||||
{
|
||||
basic_string_char ret = {0};
|
||||
FIXME("(%p) stub\n", this);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?falsename@?$numpunct@D@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
/* ?falsename@?$numpunct@D@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(numpunct_char_falsename, 4)
|
||||
basic_string_char __thiscall numpunct_char_falsename(const numpunct_char *this)
|
||||
DEFINE_THISCALL_WRAPPER(numpunct_char_falsename, 8)
|
||||
basic_string_char* __thiscall numpunct_char_falsename(const numpunct_char *this, basic_string_char *ret)
|
||||
{
|
||||
basic_string_char ret = {0};
|
||||
FIXME("(%p) stub\n", this);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?do_truename@?$numpunct@D@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
/* ?do_truename@?$numpunct@D@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(numpunct_char_do_truename, 4)
|
||||
basic_string_char __thiscall numpunct_char_do_truename(const numpunct_char *this)
|
||||
DEFINE_THISCALL_WRAPPER(numpunct_char_do_truename, 8)
|
||||
basic_string_char* __thiscall numpunct_char_do_truename(const numpunct_char *this, basic_string_char *ret)
|
||||
{
|
||||
basic_string_char ret = {0};
|
||||
FIXME("(%p) stub\n", this);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?truename@?$numpunct@D@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
/* ?truename@?$numpunct@D@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(numpunct_char_truename, 4)
|
||||
basic_string_char __thiscall numpunct_char_truename(const numpunct_char *this)
|
||||
DEFINE_THISCALL_WRAPPER(numpunct_char_truename, 8)
|
||||
basic_string_char* __thiscall numpunct_char_truename(const numpunct_char *this, basic_string_char *ret)
|
||||
{
|
||||
basic_string_char ret = {0};
|
||||
FIXME("(%p) stub\n", this);
|
||||
return ret;
|
||||
}
|
||||
|
@ -2836,10 +2825,9 @@ wchar_t __thiscall numpunct_wchar_thousands_sep(const numpunct_wchar *this)
|
|||
/* ?do_grouping@?$numpunct@_W@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
/* ?do_grouping@?$numpunct@G@std@@MBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
/* ?do_grouping@?$numpunct@G@std@@MEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(numpunct_wchar_do_grouping, 4)
|
||||
basic_string_char __thiscall numpunct_wchar_do_grouping(const numpunct_wchar *this)
|
||||
DEFINE_THISCALL_WRAPPER(numpunct_wchar_do_grouping, 8)
|
||||
basic_string_char* __thiscall numpunct_wchar_do_grouping(const numpunct_wchar *this, basic_string_char *ret)
|
||||
{
|
||||
basic_string_char ret = {0};
|
||||
FIXME("(%p) stub\n", this);
|
||||
return ret;
|
||||
}
|
||||
|
@ -2848,10 +2836,9 @@ basic_string_char __thiscall numpunct_wchar_do_grouping(const numpunct_wchar *th
|
|||
/* ?grouping@?$numpunct@_W@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
/* ?grouping@?$numpunct@G@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
/* ?grouping@?$numpunct@G@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(numpunct_wchar_grouping, 4)
|
||||
basic_string_char __thiscall numpunct_wchar_grouping(const numpunct_wchar *this)
|
||||
DEFINE_THISCALL_WRAPPER(numpunct_wchar_grouping, 8)
|
||||
basic_string_char* __thiscall numpunct_wchar_grouping(const numpunct_wchar *this, basic_string_char *ret)
|
||||
{
|
||||
basic_string_char ret = {0};
|
||||
FIXME("(%p) stub\n", this);
|
||||
return ret;
|
||||
}
|
||||
|
@ -2860,10 +2847,9 @@ basic_string_char __thiscall numpunct_wchar_grouping(const numpunct_wchar *this)
|
|||
/* ?do_falsename@?$numpunct@_W@std@@MEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
|
||||
/* ?do_falsename@?$numpunct@G@std@@MBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
|
||||
/* ?do_falsename@?$numpunct@G@std@@MEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(numpunct_wchar_do_falsename, 4)
|
||||
basic_string_wchar __thiscall numpunct_wchar_do_falsename(const numpunct_wchar *this)
|
||||
DEFINE_THISCALL_WRAPPER(numpunct_wchar_do_falsename, 8)
|
||||
basic_string_wchar* __thiscall numpunct_wchar_do_falsename(const numpunct_wchar *this, basic_string_wchar *ret)
|
||||
{
|
||||
basic_string_wchar ret = {0};
|
||||
FIXME("(%p) stub\n", this);
|
||||
return ret;
|
||||
}
|
||||
|
@ -2872,10 +2858,9 @@ basic_string_wchar __thiscall numpunct_wchar_do_falsename(const numpunct_wchar *
|
|||
/* ?falsename@?$numpunct@_W@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
|
||||
/* ?falsename@?$numpunct@G@std@@QBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
|
||||
/* ?falsename@?$numpunct@G@std@@QEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(numpunct_wchar_falsename, 4)
|
||||
basic_string_wchar __thiscall numpunct_wchar_falsename(const numpunct_wchar *this)
|
||||
DEFINE_THISCALL_WRAPPER(numpunct_wchar_falsename, 8)
|
||||
basic_string_wchar* __thiscall numpunct_wchar_falsename(const numpunct_wchar *this, basic_string_wchar *ret)
|
||||
{
|
||||
basic_string_wchar ret = {0};
|
||||
FIXME("(%p) stub\n", this);
|
||||
return ret;
|
||||
}
|
||||
|
@ -2884,10 +2869,9 @@ basic_string_wchar __thiscall numpunct_wchar_falsename(const numpunct_wchar *thi
|
|||
/* ?do_truename@?$numpunct@_W@std@@MEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
|
||||
/* ?do_truename@?$numpunct@G@std@@MBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
|
||||
/* ?do_truename@?$numpunct@G@std@@MEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(numpunct_wchar_do_truename, 4)
|
||||
basic_string_wchar __thiscall numpunct_wchar_do_truename(const numpunct_wchar *this)
|
||||
DEFINE_THISCALL_WRAPPER(numpunct_wchar_do_truename, 8)
|
||||
basic_string_wchar* __thiscall numpunct_wchar_do_truename(const numpunct_wchar *this, basic_string_wchar *ret)
|
||||
{
|
||||
basic_string_wchar ret = {0};
|
||||
FIXME("(%p) stub\n", this);
|
||||
return ret;
|
||||
}
|
||||
|
@ -2896,10 +2880,9 @@ basic_string_wchar __thiscall numpunct_wchar_do_truename(const numpunct_wchar *t
|
|||
/* ?truename@?$numpunct@_W@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ */
|
||||
/* ?truename@?$numpunct@G@std@@QBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
|
||||
/* ?truename@?$numpunct@G@std@@QEBA?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(numpunct_wchar_truename, 4)
|
||||
basic_string_wchar __thiscall numpunct_wchar_truename(const numpunct_wchar *this)
|
||||
DEFINE_THISCALL_WRAPPER(numpunct_wchar_truename, 8)
|
||||
basic_string_wchar* __thiscall numpunct_wchar_truename(const numpunct_wchar *this, basic_string_wchar *ret)
|
||||
{
|
||||
basic_string_wchar ret = {0};
|
||||
FIXME("(%p) stub\n", this);
|
||||
return ret;
|
||||
}
|
||||
|
@ -3301,11 +3284,12 @@ const locale* __cdecl locale_classic(void)
|
|||
|
||||
/* ?name@locale@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
/* ?name@locale@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(locale_name, 4)
|
||||
basic_string_char __thiscall locale_name(const locale *this)
|
||||
DEFINE_THISCALL_WRAPPER(locale_name, 8)
|
||||
basic_string_char* __thiscall locale_name(const locale *this, basic_string_char *ret)
|
||||
{
|
||||
TRACE( "(%p)\n", this);
|
||||
return this->ptr->name;
|
||||
MSVCP_basic_string_char_copy_ctor(ret, &this->ptr->name);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const rtti_base_descriptor locale_facet_rtti_base_descriptor = {
|
||||
|
|
|
@ -44,23 +44,12 @@ extern void* (__cdecl *MSVCRT_set_new_handler)(void*);
|
|||
"pushl %ecx\n\t" \
|
||||
"pushl %eax\n\t" \
|
||||
"jmp " __ASM_NAME(#func) __ASM_STDCALL(args) )
|
||||
|
||||
#define DEFINE_THISCALL_WRAPPER_RETPTR(func,args) \
|
||||
extern void THISCALL(func)(void); \
|
||||
__ASM_GLOBAL_FUNC(__thiscall_ ## func, \
|
||||
"popl %eax\n\t" \
|
||||
"popl %edx\n\t" \
|
||||
"pushl %ecx\n\t" \
|
||||
"pushl %edx\n\t" \
|
||||
"pushl %eax\n\t" \
|
||||
"jmp " __ASM_NAME(#func) __ASM_STDCALL(args) )
|
||||
#else /* __i386__ */
|
||||
|
||||
#define THISCALL(func) func
|
||||
#define THISCALL_NAME(func) __ASM_NAME(#func)
|
||||
#define __thiscall __cdecl
|
||||
#define DEFINE_THISCALL_WRAPPER(func,args) /* nothing */
|
||||
#define DEFINE_THISCALL_WRAPPER_RETPTR(func,args) /* nothing */
|
||||
|
||||
#endif /* __i386__ */
|
||||
|
||||
|
|
|
@ -663,10 +663,9 @@ MSVCP_size_t __cdecl MSVCP_basic_string_char_Pdif(String_iterator_char i1, Strin
|
|||
|
||||
/* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$allocator@D@2@XZ */
|
||||
/* ?get_allocator@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$allocator@D@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(basic_string_char_get_allocator, 4)
|
||||
allocator __thiscall basic_string_char_get_allocator(const basic_string_char *this)
|
||||
DEFINE_THISCALL_WRAPPER(basic_string_char_get_allocator, 8)
|
||||
allocator* __thiscall basic_string_char_get_allocator(const basic_string_char *this, allocator *ret)
|
||||
{
|
||||
allocator ret = {0};
|
||||
TRACE("%p\n", this);
|
||||
return ret;
|
||||
}
|
||||
|
@ -697,34 +696,40 @@ basic_string_char* __thiscall MSVCP_basic_string_char_erase(
|
|||
|
||||
/* ?erase@?$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@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */
|
||||
/* ?erase@?$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@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@0@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(basic_string_char_erase_iter_range, 20)
|
||||
String_iterator_char __thiscall basic_string_char_erase_iter_range(basic_string_char *this,
|
||||
String_iterator_char beg, String_iterator_char end)
|
||||
DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter_range, 24)
|
||||
String_iterator_char* __thiscall basic_string_char_erase_iter_range(basic_string_char *this,
|
||||
String_iterator_char *ret, String_iterator_char beg, String_iterator_char end)
|
||||
{
|
||||
String_iterator_char iter = { this, basic_string_char_ptr(this) };
|
||||
MSVCP_size_t off = MSVCP_basic_string_char_Pdif(beg, iter);
|
||||
MSVCP_size_t off;
|
||||
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_char_ptr(this);
|
||||
off = MSVCP_basic_string_char_Pdif(beg, *ret);
|
||||
|
||||
MSVCP_basic_string_char_erase(this, off, MSVCP_basic_string_char_Pdif(end, beg));
|
||||
|
||||
iter.bstr = this;
|
||||
iter.pos = basic_string_char_ptr(this)+off;
|
||||
return iter;
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_char_ptr(this)+off;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?erase@?$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@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
|
||||
/* ?erase@?$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@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(basic_string_char_erase_iter, 12)
|
||||
String_iterator_char __thiscall basic_string_char_erase_iter(
|
||||
basic_string_char *this, String_iterator_char pos)
|
||||
DEFINE_THISCALL_WRAPPER(basic_string_char_erase_iter, 16)
|
||||
String_iterator_char* __thiscall basic_string_char_erase_iter(basic_string_char *this,
|
||||
String_iterator_char *ret, String_iterator_char pos)
|
||||
{
|
||||
String_iterator_char iter = { this, basic_string_char_ptr(this) };
|
||||
MSVCP_size_t off = MSVCP_basic_string_char_Pdif(pos, iter);
|
||||
MSVCP_size_t off;
|
||||
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_char_ptr(this);
|
||||
off = MSVCP_basic_string_char_Pdif(pos, *ret);
|
||||
|
||||
MSVCP_basic_string_char_erase(this, off, 1);
|
||||
|
||||
iter.bstr = this;
|
||||
iter.pos = basic_string_char_ptr(this)+off;
|
||||
return iter;
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_char_ptr(this)+off;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@ABV12@II@Z */
|
||||
|
@ -1120,14 +1125,13 @@ void __thiscall MSVCP_basic_string_char_swap(basic_string_char *this, basic_stri
|
|||
|
||||
/* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z */
|
||||
/* ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV12@_K0@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(MSVCP_basic_string_char_substr, 12)
|
||||
basic_string_char __thiscall MSVCP_basic_string_char_substr(
|
||||
basic_string_char *this, MSVCP_size_t off, MSVCP_size_t len)
|
||||
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_substr, 16)
|
||||
basic_string_char* __thiscall MSVCP_basic_string_char_substr(basic_string_char *this,
|
||||
basic_string_char *ret, MSVCP_size_t off, MSVCP_size_t len)
|
||||
{
|
||||
basic_string_char ret = { 0 };
|
||||
TRACE("%p %lu %lu\n", this, off, len);
|
||||
|
||||
MSVCP_basic_string_char_ctor_substr(&ret, this, off, len);
|
||||
MSVCP_basic_string_char_ctor_substr(ret, this, off, len);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -2179,25 +2183,28 @@ void __thiscall basic_string_char_insert_iter_chn(basic_string_char *this,
|
|||
|
||||
/* ?insert@?$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@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@D@Z */
|
||||
/* ?insert@?$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@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@D@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(basic_string_char_insert_iter_ch, 16)
|
||||
String_iterator_char __thiscall basic_string_char_insert_iter_ch(
|
||||
basic_string_char *this, String_iterator_char where, char ch)
|
||||
DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_ch, 20)
|
||||
String_iterator_char* __thiscall basic_string_char_insert_iter_ch(basic_string_char *this,
|
||||
String_iterator_char *ret, String_iterator_char where, char ch)
|
||||
{
|
||||
String_iterator_char iter = { this, basic_string_char_ptr(this) };
|
||||
MSVCP_size_t off = MSVCP_basic_string_char_Pdif(where, iter);
|
||||
MSVCP_size_t off;
|
||||
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_char_ptr(this);
|
||||
off = MSVCP_basic_string_char_Pdif(where, *ret);
|
||||
|
||||
basic_string_char_insert_chn(this, off, 1, ch);
|
||||
iter.pos = basic_string_char_ptr(this)+off;
|
||||
return iter;
|
||||
ret->pos = basic_string_char_ptr(this)+off;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?insert@?$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@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
|
||||
/* ?insert@?$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@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(basic_string_char_insert_iter_null, 12)
|
||||
String_iterator_char __thiscall basic_string_char_insert_iter_null(
|
||||
basic_string_char *this, String_iterator_char where)
|
||||
DEFINE_THISCALL_WRAPPER(basic_string_char_insert_iter_null, 16)
|
||||
String_iterator_char* __thiscall basic_string_char_insert_iter_null(basic_string_char *this,
|
||||
String_iterator_char *ret, String_iterator_char where)
|
||||
{
|
||||
return basic_string_char_insert_iter_ch(this, where, 0);
|
||||
return basic_string_char_insert_iter_ch(this, ret, where, 0);
|
||||
}
|
||||
|
||||
/* ?insert@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@00@Z */
|
||||
|
@ -2253,15 +2260,14 @@ void __thiscall MSVCP_basic_string_char_clear(basic_string_char *this)
|
|||
/* ?begin@?$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 */
|
||||
/* ?begin@?$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 */
|
||||
/* ?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(MSVCP_basic_string_char_begin, 4)
|
||||
String_iterator_char __thiscall MSVCP_basic_string_char_begin(basic_string_char *this)
|
||||
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_begin, 8)
|
||||
String_iterator_char* __thiscall MSVCP_basic_string_char_begin(
|
||||
basic_string_char *this, String_iterator_char *ret)
|
||||
{
|
||||
String_iterator_char ret;
|
||||
|
||||
TRACE("%p\n", this);
|
||||
|
||||
ret.bstr = this;
|
||||
ret.pos = basic_string_char_const_ptr(this);
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_char_const_ptr(this);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -2269,15 +2275,14 @@ String_iterator_char __thiscall MSVCP_basic_string_char_begin(basic_string_char
|
|||
/* ?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 */
|
||||
/* ?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 */
|
||||
/* ?end@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(MSVCP_basic_string_char_end, 4)
|
||||
String_iterator_char __thiscall MSVCP_basic_string_char_end(basic_string_char *this)
|
||||
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_end, 8)
|
||||
String_iterator_char* __thiscall MSVCP_basic_string_char_end(
|
||||
basic_string_char *this, String_iterator_char *ret)
|
||||
{
|
||||
String_iterator_char ret;
|
||||
|
||||
TRACE("%p\n", this);
|
||||
|
||||
ret.bstr = this;
|
||||
ret.pos = basic_string_char_const_ptr(this)+this->size;
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_char_const_ptr(this)+this->size;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -2285,15 +2290,14 @@ String_iterator_char __thiscall MSVCP_basic_string_char_end(basic_string_char *t
|
|||
/* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$reverse_iterator@V?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
|
||||
/* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
|
||||
/* ?rbegin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$reverse_iterator@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(MSVCP_basic_string_char_rbegin, 4)
|
||||
String_reverse_iterator_char __thiscall MSVCP_basic_string_char_rbegin(basic_string_char *this)
|
||||
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rbegin, 8)
|
||||
String_reverse_iterator_char* __thiscall MSVCP_basic_string_char_rbegin(
|
||||
basic_string_char *this, String_reverse_iterator_char *ret)
|
||||
{
|
||||
String_reverse_iterator_char ret;
|
||||
|
||||
TRACE("%p\n", this);
|
||||
|
||||
ret.bstr = this;
|
||||
ret.pos = basic_string_char_const_ptr(this)+this->size;
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_char_const_ptr(this)+this->size;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -2301,15 +2305,14 @@ String_reverse_iterator_char __thiscall MSVCP_basic_string_char_rbegin(basic_str
|
|||
/* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA?AV?$reverse_iterator@V?$_String_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
|
||||
/* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV?$reverse_iterator@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
|
||||
/* ?rend@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV?$reverse_iterator@V?$_String_const_iterator@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(MSVCP_basic_string_char_rend, 4)
|
||||
String_reverse_iterator_char __thiscall MSVCP_basic_string_char_rend(basic_string_char *this)
|
||||
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_char_rend, 8)
|
||||
String_reverse_iterator_char* __thiscall MSVCP_basic_string_char_rend(
|
||||
basic_string_char *this, String_reverse_iterator_char *ret)
|
||||
{
|
||||
String_reverse_iterator_char ret;
|
||||
|
||||
TRACE("%p\n", this);
|
||||
|
||||
ret.bstr = this;
|
||||
ret.pos = basic_string_char_const_ptr(this);
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_char_const_ptr(this);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -2507,36 +2510,42 @@ basic_string_wchar* __thiscall MSVCP_basic_string_wchar_erase(
|
|||
/* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@0@Z */
|
||||
/* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0@Z */
|
||||
/* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@0@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(basic_string_wchar_erase_iter_range, 20)
|
||||
String_iterator_wchar __thiscall basic_string_wchar_erase_iter_range(basic_string_wchar *this,
|
||||
String_iterator_wchar beg, String_iterator_wchar end)
|
||||
DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter_range, 24)
|
||||
String_iterator_wchar* __thiscall basic_string_wchar_erase_iter_range(basic_string_wchar *this,
|
||||
String_iterator_wchar *ret, String_iterator_wchar beg, String_iterator_wchar end)
|
||||
{
|
||||
String_iterator_wchar iter = { this, basic_string_wchar_ptr(this) };
|
||||
MSVCP_size_t off = MSVCP_basic_string_wchar_Pdif(beg, iter);
|
||||
MSVCP_size_t off;
|
||||
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_wchar_ptr(this);
|
||||
off = MSVCP_basic_string_wchar_Pdif(beg, *ret);
|
||||
|
||||
MSVCP_basic_string_wchar_erase(this, off, MSVCP_basic_string_wchar_Pdif(end, beg));
|
||||
|
||||
iter.bstr = this;
|
||||
iter.pos = basic_string_wchar_ptr(this)+off;
|
||||
return iter;
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_wchar_ptr(this)+off;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
|
||||
/* ?erase@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
|
||||
/* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
|
||||
/* ?erase@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(basic_string_wchar_erase_iter, 12)
|
||||
String_iterator_wchar __thiscall basic_string_wchar_erase_iter(
|
||||
basic_string_wchar *this, String_iterator_wchar pos)
|
||||
DEFINE_THISCALL_WRAPPER(basic_string_wchar_erase_iter, 16)
|
||||
String_iterator_wchar* __thiscall basic_string_wchar_erase_iter(basic_string_wchar *this,
|
||||
String_iterator_wchar *ret, String_iterator_wchar pos)
|
||||
{
|
||||
String_iterator_wchar iter = { this, basic_string_wchar_ptr(this) };
|
||||
MSVCP_size_t off = MSVCP_basic_string_wchar_Pdif(pos, iter);
|
||||
MSVCP_size_t off;
|
||||
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_wchar_ptr(this);
|
||||
off = MSVCP_basic_string_wchar_Pdif(pos, *ret);
|
||||
|
||||
MSVCP_basic_string_wchar_erase(this, off, 1);
|
||||
|
||||
iter.bstr = this;
|
||||
iter.pos = basic_string_wchar_ptr(this)+off;
|
||||
return iter;
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_wchar_ptr(this)+off;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@ABV12@II@Z */
|
||||
|
@ -3006,14 +3015,13 @@ void __thiscall MSVCP_basic_string_wchar_swap(basic_string_wchar *this, basic_st
|
|||
/* ?substr@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV12@_K0@Z */
|
||||
/* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV12@II@Z */
|
||||
/* ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV12@_K0@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(MSVCP_basic_string_wchar_substr, 12)
|
||||
basic_string_wchar __thiscall MSVCP_basic_string_wchar_substr(
|
||||
basic_string_wchar *this, MSVCP_size_t off, MSVCP_size_t len)
|
||||
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_substr, 16)
|
||||
basic_string_wchar* __thiscall MSVCP_basic_string_wchar_substr(basic_string_wchar *this,
|
||||
basic_string_wchar *ret, MSVCP_size_t off, MSVCP_size_t len)
|
||||
{
|
||||
basic_string_wchar ret = { 0 };
|
||||
TRACE("%p %lu %lu\n", this, off, len);
|
||||
|
||||
MSVCP_basic_string_wchar_ctor_substr(&ret, this, off, len);
|
||||
MSVCP_basic_string_wchar_ctor_substr(ret, this, off, len);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -4162,27 +4170,30 @@ void __thiscall basic_string_wchar_insert_iter_chn(basic_string_wchar *this,
|
|||
/* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@_W@Z */
|
||||
/* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@G@Z */
|
||||
/* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@G@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(basic_string_wchar_insert_iter_ch, 16)
|
||||
String_iterator_wchar __thiscall basic_string_wchar_insert_iter_ch(
|
||||
basic_string_wchar *this, String_iterator_wchar where, wchar_t ch)
|
||||
DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_ch, 20)
|
||||
String_iterator_wchar* __thiscall basic_string_wchar_insert_iter_ch(basic_string_wchar *this,
|
||||
String_iterator_wchar *ret, String_iterator_wchar where, wchar_t ch)
|
||||
{
|
||||
String_iterator_wchar iter = { this, basic_string_wchar_ptr(this) };
|
||||
MSVCP_size_t off = MSVCP_basic_string_wchar_Pdif(where, iter);
|
||||
MSVCP_size_t off;
|
||||
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_wchar_ptr(this);
|
||||
off = MSVCP_basic_string_wchar_Pdif(where, *ret);
|
||||
|
||||
basic_string_wchar_insert_chn(this, off, 1, ch);
|
||||
iter.pos = basic_string_wchar_ptr(this)+off;
|
||||
return iter;
|
||||
ret->pos = basic_string_wchar_ptr(this)+off;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
|
||||
/* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA?AV?$_String_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@V?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z */
|
||||
/* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
|
||||
/* ?insert@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@@Z */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(basic_string_wchar_insert_iter_null, 12)
|
||||
String_iterator_wchar __thiscall basic_string_wchar_insert_iter_null(
|
||||
basic_string_wchar *this, String_iterator_wchar where)
|
||||
DEFINE_THISCALL_WRAPPER(basic_string_wchar_insert_iter_null, 16)
|
||||
String_iterator_wchar* __thiscall basic_string_wchar_insert_iter_null(basic_string_wchar *this,
|
||||
String_iterator_wchar *ret, String_iterator_wchar where)
|
||||
{
|
||||
return basic_string_wchar_insert_iter_ch(this, where, 0);
|
||||
return basic_string_wchar_insert_iter_ch(this, ret, where, 0);
|
||||
}
|
||||
|
||||
/* ?insert@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEXV?$_String_const_iterator@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@00@Z */
|
||||
|
@ -4336,15 +4347,14 @@ void __thiscall MSVCP_basic_string_wchar_clear(basic_string_wchar *this)
|
|||
/* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
|
||||
/* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
|
||||
/* ?begin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(MSVCP_basic_string_wchar_begin, 4)
|
||||
String_iterator_wchar __thiscall MSVCP_basic_string_wchar_begin(basic_string_wchar *this)
|
||||
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_begin, 8)
|
||||
String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_begin(
|
||||
basic_string_wchar *this, String_iterator_wchar *ret)
|
||||
{
|
||||
String_iterator_wchar ret;
|
||||
|
||||
TRACE("%p\n", this);
|
||||
|
||||
ret.bstr = this;
|
||||
ret.pos = basic_string_wchar_const_ptr(this);
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_wchar_const_ptr(this);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -4356,15 +4366,14 @@ String_iterator_wchar __thiscall MSVCP_basic_string_wchar_begin(basic_string_wch
|
|||
/* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
|
||||
/* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
|
||||
/* ?end@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(MSVCP_basic_string_wchar_end, 4)
|
||||
String_iterator_wchar __thiscall MSVCP_basic_string_wchar_end(basic_string_wchar *this)
|
||||
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_end, 8)
|
||||
String_iterator_wchar* __thiscall MSVCP_basic_string_wchar_end(
|
||||
basic_string_wchar *this, String_iterator_wchar *ret)
|
||||
{
|
||||
String_iterator_wchar ret;
|
||||
|
||||
TRACE("%p\n", this);
|
||||
|
||||
ret.bstr = this;
|
||||
ret.pos = basic_string_wchar_const_ptr(this)+this->size;
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_wchar_const_ptr(this)+this->size;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -4376,15 +4385,14 @@ String_iterator_wchar __thiscall MSVCP_basic_string_wchar_end(basic_string_wchar
|
|||
/* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$reverse_iterator@V?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
|
||||
/* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
|
||||
/* ?rbegin@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$reverse_iterator@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(MSVCP_basic_string_wchar_rbegin, 4)
|
||||
String_reverse_iterator_wchar __thiscall MSVCP_basic_string_wchar_rbegin(basic_string_wchar *this)
|
||||
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rbegin, 8)
|
||||
String_reverse_iterator_wchar* __thiscall MSVCP_basic_string_wchar_rbegin(
|
||||
basic_string_wchar *this, String_reverse_iterator_wchar *ret)
|
||||
{
|
||||
String_reverse_iterator_wchar ret;
|
||||
|
||||
TRACE("%p\n", this);
|
||||
|
||||
ret.bstr = this;
|
||||
ret.pos = basic_string_wchar_const_ptr(this)+this->size;
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_wchar_const_ptr(this)+this->size;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -4396,15 +4404,14 @@ String_reverse_iterator_wchar __thiscall MSVCP_basic_string_wchar_rbegin(basic_s
|
|||
/* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA?AV?$reverse_iterator@V?$_String_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
|
||||
/* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV?$reverse_iterator@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
|
||||
/* ?rend@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEBA?AV?$reverse_iterator@V?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@2@XZ */
|
||||
DEFINE_THISCALL_WRAPPER_RETPTR(MSVCP_basic_string_wchar_rend, 4)
|
||||
String_reverse_iterator_wchar __thiscall MSVCP_basic_string_wchar_rend(basic_string_wchar *this)
|
||||
DEFINE_THISCALL_WRAPPER(MSVCP_basic_string_wchar_rend, 8)
|
||||
String_reverse_iterator_wchar* __thiscall MSVCP_basic_string_wchar_rend(
|
||||
basic_string_wchar *this, String_reverse_iterator_wchar *ret)
|
||||
{
|
||||
String_reverse_iterator_wchar ret;
|
||||
|
||||
TRACE("%p\n", this);
|
||||
|
||||
ret.bstr = this;
|
||||
ret.pos = basic_string_wchar_const_ptr(this);
|
||||
ret->bstr = this;
|
||||
ret->pos = basic_string_wchar_const_ptr(this);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue