From 53ee229093ee0b297dfdcdae71556f6f17d299e8 Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Mon, 16 Jun 2014 17:29:55 +0000 Subject: [PATCH] base: put the array growing logic in a central place. --- src/lol/base/array.h | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/lol/base/array.h b/src/lol/base/array.h index 97ec5a7a..c0acef18 100644 --- a/src/lol/base/array.h +++ b/src/lol/base/array.h @@ -192,7 +192,7 @@ public: if (m_count >= m_reserved) { T tmp = x; - Reserve(m_count * 13 / 8 + 8); + Grow(); new (&m_data[m_count]) Element(tmp); } else @@ -251,7 +251,7 @@ public: ASSERT(pos <= m_count); if (m_count >= m_reserved) - Reserve(m_count * 13 / 8 + 8); + Grow(); for (int i = m_count; i > pos; --i) { @@ -474,6 +474,11 @@ public: inline int Bytes() const { return m_count * sizeof(Element); } protected: + void Grow() + { + Reserve(m_count * 13 / 8 + 8); + } + Element *m_data; int m_count, m_reserved; }; @@ -553,7 +558,7 @@ public: { T1 tmp1 = m1; T2 tmp2 = m2; T3 tmp3 = m3; T4 tmp4 = m4; 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].m2) T2(tmp2); 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; 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].m2) T2(tmp2); 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; 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].m2) T2(tmp2); 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; 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].m2) T2(tmp2); new (&this->m_data[this->m_count].m3) T3(tmp3); @@ -693,7 +698,7 @@ public: if (this->m_count >= this->m_reserved) { 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].m2) T2(tmp2); new (&this->m_data[this->m_count].m3) T3(tmp3); @@ -721,7 +726,7 @@ public: if (this->m_count >= this->m_reserved) { 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].m2) T2(tmp2); new (&this->m_data[this->m_count].m3) T3(tmp3); @@ -747,7 +752,7 @@ public: if (this->m_count >= this->m_reserved) { 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].m2) T2(tmp2); }