| @@ -192,7 +192,7 @@ public: | |||||
| if (m_count >= m_reserved) | if (m_count >= m_reserved) | ||||
| { | { | ||||
| T tmp = x; | T tmp = x; | ||||
| Reserve(m_count * 13 / 8 + 8); | |||||
| Grow(); | |||||
| new (&m_data[m_count]) Element(tmp); | new (&m_data[m_count]) Element(tmp); | ||||
| } | } | ||||
| else | else | ||||
| @@ -251,7 +251,7 @@ public: | |||||
| ASSERT(pos <= m_count); | ASSERT(pos <= m_count); | ||||
| if (m_count >= m_reserved) | if (m_count >= m_reserved) | ||||
| Reserve(m_count * 13 / 8 + 8); | |||||
| Grow(); | |||||
| for (int i = m_count; i > pos; --i) | for (int i = m_count; i > pos; --i) | ||||
| { | { | ||||
| @@ -474,6 +474,11 @@ public: | |||||
| inline int Bytes() const { return m_count * sizeof(Element); } | inline int Bytes() const { return m_count * sizeof(Element); } | ||||
| protected: | protected: | ||||
| void Grow() | |||||
| { | |||||
| Reserve(m_count * 13 / 8 + 8); | |||||
| } | |||||
| Element *m_data; | Element *m_data; | ||||
| int m_count, m_reserved; | int m_count, m_reserved; | ||||
| }; | }; | ||||
| @@ -553,7 +558,7 @@ public: | |||||
| { | { | ||||
| T1 tmp1 = m1; T2 tmp2 = m2; T3 tmp3 = m3; T4 tmp4 = m4; | T1 tmp1 = m1; T2 tmp2 = m2; T3 tmp3 = m3; T4 tmp4 = m4; | ||||
| T5 tmp5 = m5; T6 tmp6 = m6; T7 tmp7 = m7; T8 tmp8 = m8; | T5 tmp5 = m5; T6 tmp6 = m6; T7 tmp7 = m7; T8 tmp8 = m8; | ||||
| this->Reserve(this->m_count * 13 / 8 + 8); | |||||
| this->Grow(); | |||||
| new (&this->m_data[this->m_count].m1) T1(tmp1); | new (&this->m_data[this->m_count].m1) T1(tmp1); | ||||
| new (&this->m_data[this->m_count].m2) T2(tmp2); | new (&this->m_data[this->m_count].m2) T2(tmp2); | ||||
| new (&this->m_data[this->m_count].m3) T3(tmp3); | new (&this->m_data[this->m_count].m3) T3(tmp3); | ||||
| @@ -592,7 +597,7 @@ public: | |||||
| { | { | ||||
| T1 tmp1 = m1; T2 tmp2 = m2; T3 tmp3 = m3; T4 tmp4 = m4; | T1 tmp1 = m1; T2 tmp2 = m2; T3 tmp3 = m3; T4 tmp4 = m4; | ||||
| T5 tmp5 = m5; T6 tmp6 = m6; T7 tmp7 = m7; | T5 tmp5 = m5; T6 tmp6 = m6; T7 tmp7 = m7; | ||||
| this->Reserve(this->m_count * 13 / 8 + 8); | |||||
| this->Grow(); | |||||
| new (&this->m_data[this->m_count].m1) T1(tmp1); | new (&this->m_data[this->m_count].m1) T1(tmp1); | ||||
| new (&this->m_data[this->m_count].m2) T2(tmp2); | new (&this->m_data[this->m_count].m2) T2(tmp2); | ||||
| new (&this->m_data[this->m_count].m3) T3(tmp3); | new (&this->m_data[this->m_count].m3) T3(tmp3); | ||||
| @@ -629,7 +634,7 @@ public: | |||||
| { | { | ||||
| T1 tmp1 = m1; T2 tmp2 = m2; T3 tmp3 = m3; T4 tmp4 = m4; | T1 tmp1 = m1; T2 tmp2 = m2; T3 tmp3 = m3; T4 tmp4 = m4; | ||||
| T5 tmp5 = m5; T6 tmp6 = m6; | T5 tmp5 = m5; T6 tmp6 = m6; | ||||
| this->Reserve(this->m_count * 13 / 8 + 8); | |||||
| this->Grow(); | |||||
| new (&this->m_data[this->m_count].m1) T1(tmp1); | new (&this->m_data[this->m_count].m1) T1(tmp1); | ||||
| new (&this->m_data[this->m_count].m2) T2(tmp2); | new (&this->m_data[this->m_count].m2) T2(tmp2); | ||||
| new (&this->m_data[this->m_count].m3) T3(tmp3); | new (&this->m_data[this->m_count].m3) T3(tmp3); | ||||
| @@ -663,7 +668,7 @@ public: | |||||
| { | { | ||||
| T1 tmp1 = m1; T2 tmp2 = m2; T3 tmp3 = m3; T4 tmp4 = m4; | T1 tmp1 = m1; T2 tmp2 = m2; T3 tmp3 = m3; T4 tmp4 = m4; | ||||
| T5 tmp5 = m5; | T5 tmp5 = m5; | ||||
| this->Reserve(this->m_count * 13 / 8 + 8); | |||||
| this->Grow(); | |||||
| new (&this->m_data[this->m_count].m1) T1(tmp1); | new (&this->m_data[this->m_count].m1) T1(tmp1); | ||||
| new (&this->m_data[this->m_count].m2) T2(tmp2); | new (&this->m_data[this->m_count].m2) T2(tmp2); | ||||
| new (&this->m_data[this->m_count].m3) T3(tmp3); | new (&this->m_data[this->m_count].m3) T3(tmp3); | ||||
| @@ -693,7 +698,7 @@ public: | |||||
| if (this->m_count >= this->m_reserved) | if (this->m_count >= this->m_reserved) | ||||
| { | { | ||||
| T1 tmp1 = m1; T2 tmp2 = m2; T3 tmp3 = m3; T4 tmp4 = m4; | T1 tmp1 = m1; T2 tmp2 = m2; T3 tmp3 = m3; T4 tmp4 = m4; | ||||
| this->Reserve(this->m_count * 13 / 8 + 8); | |||||
| this->Grow(); | |||||
| new (&this->m_data[this->m_count].m1) T1(tmp1); | new (&this->m_data[this->m_count].m1) T1(tmp1); | ||||
| new (&this->m_data[this->m_count].m2) T2(tmp2); | new (&this->m_data[this->m_count].m2) T2(tmp2); | ||||
| new (&this->m_data[this->m_count].m3) T3(tmp3); | new (&this->m_data[this->m_count].m3) T3(tmp3); | ||||
| @@ -721,7 +726,7 @@ public: | |||||
| if (this->m_count >= this->m_reserved) | if (this->m_count >= this->m_reserved) | ||||
| { | { | ||||
| T1 tmp1 = m1; T2 tmp2 = m2; T3 tmp3 = m3; | T1 tmp1 = m1; T2 tmp2 = m2; T3 tmp3 = m3; | ||||
| this->Reserve(this->m_count * 13 / 8 + 8); | |||||
| this->Grow(); | |||||
| new (&this->m_data[this->m_count].m1) T1(tmp1); | new (&this->m_data[this->m_count].m1) T1(tmp1); | ||||
| new (&this->m_data[this->m_count].m2) T2(tmp2); | new (&this->m_data[this->m_count].m2) T2(tmp2); | ||||
| new (&this->m_data[this->m_count].m3) T3(tmp3); | new (&this->m_data[this->m_count].m3) T3(tmp3); | ||||
| @@ -747,7 +752,7 @@ public: | |||||
| if (this->m_count >= this->m_reserved) | if (this->m_count >= this->m_reserved) | ||||
| { | { | ||||
| T1 tmp1 = m1; T2 tmp2 = m2; | T1 tmp1 = m1; T2 tmp2 = m2; | ||||
| this->Reserve(this->m_count * 13 / 8 + 8); | |||||
| this->Grow(); | |||||
| new (&this->m_data[this->m_count].m1) T1(tmp1); | new (&this->m_data[this->m_count].m1) T1(tmp1); | ||||
| new (&this->m_data[this->m_count].m2) T2(tmp2); | new (&this->m_data[this->m_count].m2) T2(tmp2); | ||||
| } | } | ||||