From 5b85557ddbc59d6ad2e46d07d1f5d777404e0db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Lu=C3=ADs=20Vaz=20Silva?= Date: Thu, 20 Apr 2023 22:03:17 -0300 Subject: [PATCH] add TArray::AppendFill for appending a single value multiple times --- src/common/utility/tarray.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/common/utility/tarray.h b/src/common/utility/tarray.h index a21226095c..3d49f18682 100644 --- a/src/common/utility/tarray.h +++ b/src/common/utility/tarray.h @@ -54,6 +54,7 @@ #include #include #include +#include #if !defined(_WIN32) #include // for intptr_t @@ -420,6 +421,26 @@ public: return start; } + unsigned AppendFill(const T& val, unsigned append_count) + { + unsigned start = Count; + + Grow(append_count); + Count += append_count; + if constexpr (std::is_trivially_copyable::value) + { + std::fill(Array + start, Array + Count, val); + } + else + { + for (unsigned i = 0; i < append_count; i++) + { + new(&Array[start + i]) T(val); + } + } + return start; + } + bool Pop () { if (Count > 0)