468 lines
13 KiB
C
468 lines
13 KiB
C
// 00153710 std::wofstream::wofstream
|
|
|
|
/* std::wofstream::wofstream(std::wofstream&&) */
|
|
|
|
void __thiscall std::wofstream::wofstream(wofstream *this,wofstream *param_1)
|
|
|
|
{
|
|
long lVar1;
|
|
undefined8 uVar2;
|
|
undefined8 uVar3;
|
|
long *in_RDX;
|
|
wios *this_00;
|
|
ios_base *piVar4;
|
|
|
|
lVar1 = *(long *)(*(long *)(param_1 + 8) + -0x18);
|
|
*(long *)this = *(long *)(param_1 + 8);
|
|
this_00 = (wios *)(this + lVar1);
|
|
this_00->vftablePtr = *(wios_vftable **)(param_1 + 0x10);
|
|
piVar4 = (ios_base *)(*(long *)(*in_RDX + -0x18) + (long)in_RDX);
|
|
ios_base::_M_move((ios_base *)this_00,piVar4);
|
|
wios::_M_cache_locale(this_00,(locale *)&(this_00->data).field_0xc8);
|
|
uVar2 = *(undefined8 *)(piVar4 + 0xd8);
|
|
*(undefined8 *)(piVar4 + 0xd8) = 0;
|
|
(this_00->data).offset_0x17 = (wstreambuf *)0x0;
|
|
uVar3 = *(undefined8 *)(param_1 + 0x18);
|
|
(this_00->data).offset_0x7 = uVar2;
|
|
(this_00->data).offset_0xf = *(undefined4 *)(piVar4 + 0xe0);
|
|
(this_00->data).offset_0x13 = piVar4[0xe4];
|
|
lVar1 = *(long *)param_1;
|
|
*(long *)this = lVar1;
|
|
*(undefined8 *)(this + *(long *)(lVar1 + -0x18)) = uVar3;
|
|
wfilebuf::wfilebuf((wfilebuf *)(this + 8),(wfilebuf *)(in_RDX + 1));
|
|
*(wfilebuf **)(this + *(long *)(*(long *)this + -0x18) + 0xe8) = (wfilebuf *)(this + 8);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00153800 std::wofstream::wofstream
|
|
|
|
/* std::wofstream::wofstream(std::wofstream&&) */
|
|
|
|
void __thiscall std::wofstream::wofstream(wofstream *this,wofstream *param_1)
|
|
|
|
{
|
|
wios *this_00;
|
|
long lVar1;
|
|
undefined8 uVar2;
|
|
ios_base *piVar3;
|
|
|
|
this_00 = (wios *)(this + 0xf8);
|
|
ios_base::ios_base((ios_base *)this_00);
|
|
*(undefined ***)this = wostream-in-std::wofstream::construction_vftable;
|
|
*(undefined ***)(this + 0xf8) = wostream-in-std::wofstream::internal_construction_vftable;
|
|
lVar1 = *(long *)param_1;
|
|
*(undefined8 *)(this + 0x1d0) = 0;
|
|
lVar1 = *(long *)(lVar1 + -0x18);
|
|
*(undefined4 *)(this + 0x1d8) = 0;
|
|
this[0x1dc] = (wofstream)0x0;
|
|
*(undefined8 *)(this + 0x1e0) = 0;
|
|
piVar3 = (ios_base *)(param_1 + lVar1);
|
|
*(undefined8 *)(this + 0x1e8) = 0;
|
|
*(undefined8 *)(this + 0x1f0) = 0;
|
|
*(undefined8 *)(this + 0x1f8) = 0;
|
|
ios_base::_M_move((ios_base *)this_00,piVar3);
|
|
wios::_M_cache_locale(this_00,(locale *)(this + 0x1c8));
|
|
uVar2 = *(undefined8 *)(piVar3 + 0xd8);
|
|
*(undefined8 *)(piVar3 + 0xd8) = 0;
|
|
*(undefined8 *)(this + 0x1e0) = 0;
|
|
*(undefined8 *)(this + 0x1d0) = uVar2;
|
|
*(undefined4 *)(this + 0x1d8) = *(undefined4 *)(piVar3 + 0xe0);
|
|
this[0x1dc] = *(wofstream *)(piVar3 + 0xe4);
|
|
*(undefined ***)this = vftable;
|
|
*(undefined ***)(this + 0xf8) = internal_vftable;
|
|
wfilebuf::wfilebuf((wfilebuf *)(this + 8),(wfilebuf *)(param_1 + 8));
|
|
*(wfilebuf **)(this + 0x1e0) = (wfilebuf *)(this + 8);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00153950 std::wofstream::swap
|
|
|
|
/* std::wofstream::swap(std::wofstream&) */
|
|
|
|
void __thiscall std::wofstream::swap(wofstream *this,wofstream *param_1)
|
|
|
|
{
|
|
undefined1 uVar1;
|
|
undefined4 uVar2;
|
|
undefined8 uVar3;
|
|
wios *this_00;
|
|
wios *this_01;
|
|
|
|
this_01 = (wios *)(this + *(long *)(*(long *)this + -0x18));
|
|
this_00 = (wios *)(param_1 + *(long *)(*(long *)param_1 + -0x18));
|
|
ios_base::_M_swap((ios_base *)this_01,(ios_base *)this_00);
|
|
wios::_M_cache_locale(this_01,(locale *)&(this_01->data).field_0xc8);
|
|
wios::_M_cache_locale(this_00,(locale *)&(this_00->data).field_0xc8);
|
|
uVar3 = (this_01->data).offset_0x7;
|
|
(this_01->data).offset_0x7 = (this_00->data).offset_0x7;
|
|
(this_00->data).offset_0x7 = uVar3;
|
|
uVar2 = (this_01->data).offset_0xf;
|
|
(this_01->data).offset_0xf = (this_00->data).offset_0xf;
|
|
(this_00->data).offset_0xf = uVar2;
|
|
uVar1 = (this_01->data).offset_0x13;
|
|
(this_01->data).offset_0x13 = (this_00->data).offset_0x13;
|
|
(this_00->data).offset_0x13 = uVar1;
|
|
wfilebuf::swap((wfilebuf *)(this + 8),(wfilebuf *)(param_1 + 8));
|
|
return;
|
|
}
|
|
|
|
|
|
// 00153a10 std::wofstream::rdbuf
|
|
|
|
/* std::wofstream::rdbuf() const */
|
|
|
|
wofstream * __thiscall std::wofstream::rdbuf(wofstream *this)
|
|
|
|
{
|
|
return this + 8;
|
|
}
|
|
|
|
|
|
// 00153a20 std::wofstream::is_open
|
|
|
|
/* std::wofstream::is_open() */
|
|
|
|
void __thiscall std::wofstream::is_open(wofstream *this)
|
|
|
|
{
|
|
__basic_file<char>::is_open((__basic_file<char> *)(this + 0x70));
|
|
return;
|
|
}
|
|
|
|
|
|
// 00153a30 std::wofstream::is_open
|
|
|
|
/* std::wofstream::is_open() const */
|
|
|
|
void __thiscall std::wofstream::is_open(wofstream *this)
|
|
|
|
{
|
|
__basic_file<char>::is_open((__basic_file<char> *)(this + 0x70));
|
|
return;
|
|
}
|
|
|
|
|
|
// 00156a80 std::wofstream::wofstream
|
|
|
|
/* std::wofstream::wofstream() */
|
|
|
|
void __thiscall std::wofstream::wofstream(wofstream *this)
|
|
|
|
{
|
|
long lVar1;
|
|
long lVar2;
|
|
long *in_RSI;
|
|
|
|
lVar1 = in_RSI[1];
|
|
*(long *)this = lVar1;
|
|
lVar1 = *(long *)(lVar1 + -0x18);
|
|
((wios *)(this + lVar1))->vftablePtr = (wios_vftable *)in_RSI[2];
|
|
wios::init((wios *)(this + lVar1),(wstreambuf *)0x0);
|
|
lVar1 = *in_RSI;
|
|
lVar2 = in_RSI[3];
|
|
*(long *)this = lVar1;
|
|
*(long *)(this + *(long *)(lVar1 + -0x18)) = lVar2;
|
|
wfilebuf::wfilebuf((wfilebuf *)(this + 8));
|
|
wios::init((wios *)(this + *(long *)(*(long *)this + -0x18)),(wstreambuf *)(this + 8));
|
|
return;
|
|
}
|
|
|
|
|
|
// 00156d50 std::wofstream::wofstream
|
|
|
|
/* std::wofstream::wofstream() */
|
|
|
|
void __thiscall std::wofstream::wofstream(wofstream *this)
|
|
|
|
{
|
|
wios *this_00;
|
|
|
|
this_00 = (wios *)(this + 0xf8);
|
|
ios_base::ios_base((ios_base *)this_00);
|
|
*(undefined ***)this = wostream-in-std::wofstream::construction_vftable;
|
|
*(undefined8 *)(this + 0x1d0) = 0;
|
|
*(undefined4 *)(this + 0x1d8) = 0;
|
|
this[0x1dc] = (wofstream)0x0;
|
|
*(undefined8 *)(this + 0x1e0) = 0;
|
|
*(undefined8 *)(this + 0x1e8) = 0;
|
|
*(undefined8 *)(this + 0x1f0) = 0;
|
|
*(undefined8 *)(this + 0x1f8) = 0;
|
|
*(undefined ***)(this + 0xf8) = wostream-in-std::wofstream::internal_construction_vftable;
|
|
wios::init(this_00,(wstreambuf *)0x0);
|
|
*(undefined ***)this = vftable;
|
|
*(undefined ***)(this + 0xf8) = internal_vftable;
|
|
wfilebuf::wfilebuf((wfilebuf *)(this + 8));
|
|
wios::init(this_00,(wstreambuf *)(this + 8));
|
|
return;
|
|
}
|
|
|
|
|
|
// 00157350 std::wofstream::operator=
|
|
|
|
/* std::wofstream::TEMPNAMEPLACEHOLDERVALUE(std::wofstream&&) */
|
|
|
|
wofstream * __thiscall std::wofstream::operator=(wofstream *this,wofstream *param_1)
|
|
|
|
{
|
|
undefined1 uVar1;
|
|
undefined4 uVar2;
|
|
undefined8 uVar3;
|
|
wios *this_00;
|
|
wios *this_01;
|
|
|
|
this_01 = (wios *)(this + *(long *)(*(long *)this + -0x18));
|
|
this_00 = (wios *)(param_1 + *(long *)(*(long *)param_1 + -0x18));
|
|
ios_base::_M_swap((ios_base *)this_01,(ios_base *)this_00);
|
|
wios::_M_cache_locale(this_01,(locale *)&(this_01->data).field_0xc8);
|
|
wios::_M_cache_locale(this_00,(locale *)&(this_00->data).field_0xc8);
|
|
uVar3 = (this_01->data).offset_0x7;
|
|
(this_01->data).offset_0x7 = (this_00->data).offset_0x7;
|
|
(this_00->data).offset_0x7 = uVar3;
|
|
uVar2 = (this_01->data).offset_0xf;
|
|
(this_01->data).offset_0xf = (this_00->data).offset_0xf;
|
|
(this_00->data).offset_0xf = uVar2;
|
|
uVar1 = (this_01->data).offset_0x13;
|
|
(this_01->data).offset_0x13 = (this_00->data).offset_0x13;
|
|
(this_00->data).offset_0x13 = uVar1;
|
|
wfilebuf::operator=((wfilebuf *)(this + 8),(wfilebuf *)(param_1 + 8));
|
|
return this;
|
|
}
|
|
|
|
|
|
// 00157560 std::wofstream::open
|
|
|
|
/* std::wofstream::open(std::string const&, std::_Ios_Openmode) */
|
|
|
|
void __thiscall std::wofstream::open(wofstream *this,undefined8 *param_1,uint param_3)
|
|
|
|
{
|
|
long lVar1;
|
|
|
|
lVar1 = wfilebuf::open((wfilebuf *)(this + 8),*param_1,param_3 | 0x10);
|
|
if (lVar1 != 0) {
|
|
wios::clear((wios *)(this + *(long *)(*(long *)this + -0x18)),0);
|
|
return;
|
|
}
|
|
wios::clear((wios *)(this + *(long *)(*(long *)this + -0x18)),
|
|
(((wios *)(this + *(long *)(*(long *)this + -0x18)))->data).offset_0x18 | 4);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00157650 std::wofstream::open
|
|
|
|
/* std::wofstream::open(char const*, std::_Ios_Openmode) */
|
|
|
|
void __thiscall std::wofstream::open(wofstream *this,undefined8 param_1,uint param_3)
|
|
|
|
{
|
|
long lVar1;
|
|
|
|
lVar1 = wfilebuf::open((wfilebuf *)(this + 8),param_1,param_3 | 0x10);
|
|
if (lVar1 != 0) {
|
|
wios::clear((wios *)(this + *(long *)(*(long *)this + -0x18)),0);
|
|
return;
|
|
}
|
|
wios::clear((wios *)(this + *(long *)(*(long *)this + -0x18)),
|
|
(((wios *)(this + *(long *)(*(long *)this + -0x18)))->data).offset_0x18 | 4);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00157ce0 std::wofstream::wofstream
|
|
|
|
/* std::wofstream::wofstream(char const*, std::_Ios_Openmode) */
|
|
|
|
void __thiscall std::wofstream::wofstream(wofstream *this,undefined8 param_1,uint param_3)
|
|
|
|
{
|
|
wfilebuf *this_00;
|
|
long lVar1;
|
|
wios *pwVar2;
|
|
|
|
pwVar2 = (wios *)(this + 0xf8);
|
|
ios_base::ios_base((ios_base *)pwVar2);
|
|
*(undefined ***)this = wostream-in-std::wofstream::construction_vftable;
|
|
*(undefined8 *)(this + 0x1d0) = 0;
|
|
*(undefined4 *)(this + 0x1d8) = 0;
|
|
this[0x1dc] = (wofstream)0x0;
|
|
*(undefined8 *)(this + 0x1e0) = 0;
|
|
*(undefined8 *)(this + 0x1e8) = 0;
|
|
*(undefined8 *)(this + 0x1f0) = 0;
|
|
*(undefined8 *)(this + 0x1f8) = 0;
|
|
*(undefined ***)(this + 0xf8) = wostream-in-std::wofstream::internal_construction_vftable;
|
|
wios::init(pwVar2,(wstreambuf *)0x0);
|
|
this_00 = (wfilebuf *)(this + 8);
|
|
*(undefined ***)this = vftable;
|
|
*(undefined ***)(this + 0xf8) = internal_vftable;
|
|
wfilebuf::wfilebuf(this_00);
|
|
wios::init(pwVar2,(wstreambuf *)this_00);
|
|
lVar1 = wfilebuf::open(this_00,param_1,param_3 | 0x10);
|
|
pwVar2 = (wios *)(this + *(long *)(*(long *)this + -0x18));
|
|
if (lVar1 != 0) {
|
|
wios::clear(pwVar2,0);
|
|
return;
|
|
}
|
|
wios::clear(pwVar2,(pwVar2->data).offset_0x18 | 4);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00157e30 std::wofstream::wofstream
|
|
|
|
/* std::wofstream::wofstream(char const*, std::_Ios_Openmode) */
|
|
|
|
void __thiscall
|
|
std::wofstream::wofstream(wofstream *this,long *param_1,undefined8 param_3,uint param_4)
|
|
|
|
{
|
|
wfilebuf *this_00;
|
|
long lVar1;
|
|
long lVar2;
|
|
wios *pwVar3;
|
|
|
|
lVar2 = param_1[1];
|
|
this_00 = (wfilebuf *)(this + 8);
|
|
*(long *)this = lVar2;
|
|
lVar2 = *(long *)(lVar2 + -0x18);
|
|
((wios *)(this + lVar2))->vftablePtr = (wios_vftable *)param_1[2];
|
|
wios::init((wios *)(this + lVar2),(wstreambuf *)0x0);
|
|
lVar2 = *param_1;
|
|
lVar1 = param_1[3];
|
|
*(long *)this = lVar2;
|
|
*(long *)(this + *(long *)(lVar2 + -0x18)) = lVar1;
|
|
wfilebuf::wfilebuf(this_00);
|
|
wios::init((wios *)(this + *(long *)(*(long *)this + -0x18)),(wstreambuf *)this_00);
|
|
lVar2 = wfilebuf::open(this_00,param_3,param_4 | 0x10);
|
|
pwVar3 = (wios *)(this + *(long *)(*(long *)this + -0x18));
|
|
if (lVar2 != 0) {
|
|
wios::clear(pwVar3,0);
|
|
return;
|
|
}
|
|
wios::clear(pwVar3,(pwVar3->data).offset_0x18 | 4);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00158070 std::wofstream::wofstream
|
|
|
|
/* std::wofstream::wofstream(std::string const&, std::_Ios_Openmode) */
|
|
|
|
void __thiscall std::wofstream::wofstream(wofstream *this,undefined8 *param_1,uint param_3)
|
|
|
|
{
|
|
wfilebuf *this_00;
|
|
long lVar1;
|
|
wios *pwVar2;
|
|
|
|
pwVar2 = (wios *)(this + 0xf8);
|
|
ios_base::ios_base((ios_base *)pwVar2);
|
|
*(undefined ***)this = wostream-in-std::wofstream::construction_vftable;
|
|
*(undefined8 *)(this + 0x1d0) = 0;
|
|
*(undefined4 *)(this + 0x1d8) = 0;
|
|
this[0x1dc] = (wofstream)0x0;
|
|
*(undefined8 *)(this + 0x1e0) = 0;
|
|
*(undefined8 *)(this + 0x1e8) = 0;
|
|
*(undefined8 *)(this + 0x1f0) = 0;
|
|
*(undefined8 *)(this + 0x1f8) = 0;
|
|
*(undefined ***)(this + 0xf8) = wostream-in-std::wofstream::internal_construction_vftable;
|
|
wios::init(pwVar2,(wstreambuf *)0x0);
|
|
this_00 = (wfilebuf *)(this + 8);
|
|
*(undefined ***)this = vftable;
|
|
*(undefined ***)(this + 0xf8) = internal_vftable;
|
|
wfilebuf::wfilebuf(this_00);
|
|
wios::init(pwVar2,(wstreambuf *)this_00);
|
|
lVar1 = wfilebuf::open(this_00,*param_1,param_3 | 0x10);
|
|
pwVar2 = (wios *)(this + *(long *)(*(long *)this + -0x18));
|
|
if (lVar1 != 0) {
|
|
wios::clear(pwVar2,0);
|
|
return;
|
|
}
|
|
wios::clear(pwVar2,(pwVar2->data).offset_0x18 | 4);
|
|
return;
|
|
}
|
|
|
|
|
|
// 001581c0 std::wofstream::wofstream
|
|
|
|
/* std::wofstream::wofstream(std::string const&, std::_Ios_Openmode) */
|
|
|
|
void __thiscall
|
|
std::wofstream::wofstream(wofstream *this,long *param_1,undefined8 *param_3,uint param_4)
|
|
|
|
{
|
|
wfilebuf *this_00;
|
|
long lVar1;
|
|
long lVar2;
|
|
wios *pwVar3;
|
|
|
|
lVar2 = param_1[1];
|
|
this_00 = (wfilebuf *)(this + 8);
|
|
*(long *)this = lVar2;
|
|
lVar2 = *(long *)(lVar2 + -0x18);
|
|
((wios *)(this + lVar2))->vftablePtr = (wios_vftable *)param_1[2];
|
|
wios::init((wios *)(this + lVar2),(wstreambuf *)0x0);
|
|
lVar2 = *param_1;
|
|
lVar1 = param_1[3];
|
|
*(long *)this = lVar2;
|
|
*(long *)(this + *(long *)(lVar2 + -0x18)) = lVar1;
|
|
wfilebuf::wfilebuf(this_00);
|
|
wios::init((wios *)(this + *(long *)(*(long *)this + -0x18)),(wstreambuf *)this_00);
|
|
lVar2 = wfilebuf::open(this_00,*param_3,param_4 | 0x10);
|
|
pwVar3 = (wios *)(this + *(long *)(*(long *)this + -0x18));
|
|
if (lVar2 != 0) {
|
|
wios::clear(pwVar3,0);
|
|
return;
|
|
}
|
|
wios::clear(pwVar3,(pwVar3->data).offset_0x18 | 4);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00158610 std::wofstream::close
|
|
|
|
/* std::wofstream::close() */
|
|
|
|
void __thiscall std::wofstream::close(wofstream *this)
|
|
|
|
{
|
|
long lVar1;
|
|
|
|
lVar1 = wfilebuf::close((wfilebuf *)(this + 8));
|
|
if (lVar1 != 0) {
|
|
return;
|
|
}
|
|
wios::clear((wios *)(this + *(long *)(*(long *)this + -0x18)),
|
|
(((wios *)(this + *(long *)(*(long *)this + -0x18)))->data).offset_0x18 | 4);
|
|
return;
|
|
}
|
|
|
|
|
|
// 00159020 std::wofstream::~wofstream
|
|
|
|
/* std::wofstream::~wofstream() */
|
|
|
|
void __thiscall std::wofstream::~wofstream(wofstream *this)
|
|
|
|
{
|
|
long lVar1;
|
|
long *in_RSI;
|
|
|
|
lVar1 = *in_RSI;
|
|
*(long *)this = lVar1;
|
|
*(long *)(this + *(long *)(lVar1 + -0x18)) = in_RSI[3];
|
|
((wfilebuf *)(this + 8))->vftablePtr = &wfilebuf::vftable;
|
|
wfilebuf::close((wfilebuf *)(this + 8));
|
|
__basic_file<char>::~__basic_file((__basic_file<char> *)(this + 0x70));
|
|
*(wstreambuf_vftable **)(this + 8) = &wstreambuf::vftable;
|
|
locale::~locale((locale *)(this + 0x40));
|
|
lVar1 = in_RSI[1];
|
|
*(long *)this = lVar1;
|
|
*(long *)(this + *(long *)(lVar1 + -0x18)) = in_RSI[2];
|
|
return;
|
|
}
|
|
|
|
|