//FTTArray - [2020-04-13 11:57:47] #ifndef _FTTARRAY_H_ #define _FTTARRAY_H_ #include #include /* 00189DB4 FTTArray,16u>::Insert(FTTPair&&) 0018A31A FTTArray,16u>::Iterator::operator++() 0018A322 FTTArray,16u>::Iterator::operator!=(FTTArray,16u>::Iterator const&) 0018A32E FTTArray,16u>::Iterator::operator*() 0018A332 FTTArray,16u>::Iterator::operator->() 0018A338 FTTArray,16u>::Iterator::operator+=(long const&) 0018A358 FTTArray,16u>::Iterator::operator-=(long const&) 0018A378 FTTArray,16u>::Iterator::operator[](long const&) 0018A384 FTTArray,16u>::Iterator::operator+(long const&) 0018A3A0 FTTArray,16u>::Iterator::operator-(long const&) 0018A3BC FTTArray,16u>::Iterator::operator-(FTTArray,16u>::Iterator const&) TShadowAABB 0x124 296 001C3788 FTTArray::FTTArray(uint) 第二个参数是数量 001C37AE FTTArray::FTTArray(uint) 001C6982 FTTArray::Iterator::operator++() 001C698A FTTArray::Iterator::operator!=(FTTArray::Iterator const&) 001C6996 FTTArray::Iterator::operator*() 001C699A FTTArray::Iterator::operator->() 001C69A0 FTTArray::Iterator::operator+=(long const&) 001C69C0 FTTArray::Iterator::operator-=(long const&) 001C69E0 FTTArray::Iterator::operator[](long const&) 001C69EC FTTArray::Iterator::operator+(long const&) 001C6A08 FTTArray::Iterator::operator-(long const&) 001C6A24 FTTArray::Iterator::operator-(FTTArray::Iterator const&) */ struct TypeData { int len; void *data; }; template class FTTArray { public: FTTArray(int a2) { m_count = a2; }; //Iterator *CreateIterator() { // return new Iterator(&array_0[0]); //} T *Insert(T &&a2) { // int v2; //r2 // float v3; //r12 // T *result; //r0 // float v5; //r2 // v2 = m_count; // m_count = v2 + 1; // v3 = array_0[v2].field_0; // array_0[v2].field_0 = a2->field_0; // result = &array_0[v2]; // a2->field_0 = v3; // v5 = result->field_4; // result->field_4 = a2->field_4; // a2->field_4 = v5; // return result; LOGE("Insertthis=%p,a2=%p",this,&a2); return ((T*)rand()); } class Iterator { public: Iterator(T *p_data) : m_buf(p_data) { } //0018A31A virtual T *operator++() { m_buf++; return m_buf; } virtual bool operator!=(Iterator const &a1) { return m_buf != a1.m_buf; } //0018A32E virtual T *operator*() { return m_buf; } //0018A332 virtual T *operator->() { return m_buf; } //0018A338 virtual TypeData operator+=(int *a3) { m_buf += *a3; TypeData result; result.len = sizeof(T); result.data = (void *)m_buf; return result; } //0018A358 virtual TypeData operator-=(int *a3) { m_buf += *a3; TypeData result; result.len = sizeof(T); result.data = (void *)m_buf; return result; } //0018A378 virtual T *operator[](int *a2) { return m_buf + *a2; } //0018A384 //FTTArray,16u>::Iterator::operator+(long const&) virtual TypeData operator+(int *a3) { T *v3 = m_buf + *a3; TypeData result; result.len = sizeof(T); result.data = (void *)v3; return result; } //0018A3A0 virtual TypeData operator-(int *a3) { T *v3 = m_buf - *a3; TypeData result; result.len = sizeof(T); result.data = (void *)v3; return result; } //0018A3BC virtual int operator-(Iterator const &a2) { return m_buf - a2.m_buf; } public: T *m_buf; }; T array_0[N]; int m_count; }; /* bool __fastcall FTTArray,16u>::Iterator::operator!=(int a1, int a2) { return *(_DWORD *)(a1 + 4) != *(_DWORD *)(a2 + 4); } int __fastcall FTTArray,16u>::Iterator::operator*(int a1) { return *(_DWORD *)(a1 + 4); } 0018A384 _DWORD *__fastcall FTTArray,16u>::Iterator::operator+(_DWORD *result, int a2, _DWORD *a3) { int v3; //r1 v3 = *(_DWORD *)(a2 + 4) + 8 * *a3; *result = &off_3231A0; result[1] = v3; return result; } int __fastcall FTTArray,16u>::Iterator::operator++(int result) { *(_DWORD *)(result + 4) += 8; return result; } _QWORD *__fastcall FTTArray,16u>::Iterator::operator+=(_QWORD *result, int a2, _DWORD *a3) { __int64 v3; //r1 HIDWORD(v3) = *(_DWORD *)(a2 + 4) + 8 * *a3; *(_DWORD *)(a2 + 4) = HIDWORD(v3); LODWORD(v3) = &off_3231A0; *result = v3; return result; } int __fastcall FTTArray,16u>::Iterator::operator-(int a1, int a2) { return (*(_DWORD *)(a1 + 4) - *(_DWORD *)(a2 + 4)) >> 3; } _DWORD *__fastcall FTTArray,16u>::Iterator::operator-(_DWORD *result, int a2, _DWORD *a3) { int v3; //r1 v3 = *(_DWORD *)(a2 + 4) - 8 * *a3; *result = &off_3231A0; result[1] = v3; return result; } _QWORD *__fastcall FTTArray,16u>::Iterator::operator-=(_QWORD *result, int a2, _DWORD *a3) { __int64 v3; //r1 HIDWORD(v3) = *(_DWORD *)(a2 + 4) - 8 * *a3; *(_DWORD *)(a2 + 4) = HIDWORD(v3); LODWORD(v3) = &off_3231A0; *result = v3; return result; } int __fastcall FTTArray,16u>::Iterator::operator->(int a1) { return *(_DWORD *)(a1 + 4); } */ #endif //_FTTARRAY_H_