diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2024-01-27 11:32:16 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2024-01-27 11:32:16 +0000 |
commit | d82541fcea40efadaef63fef5f4a76c3fea5defe (patch) | |
tree | 4fcc8e8f73208c6cff60db59d5093817f0af40c0 | |
parent | Add text to framebuffer rendering test (diff) | |
download | ilt-d82541fcea40efadaef63fef5f4a76c3fea5defe.tar.bz2 ilt-d82541fcea40efadaef63fef5f4a76c3fea5defe.tar.xz ilt-d82541fcea40efadaef63fef5f4a76c3fea5defe.zip |
Support constructing a glContainer from a collection of the same type
-rw-r--r-- | lib/glContainer.h | 6 | ||||
-rw-r--r-- | test/test-glContainer.cpp | 9 |
2 files changed, 15 insertions, 0 deletions
diff --git a/lib/glContainer.h b/lib/glContainer.h index ce88916..2ccc1c2 100644 --- a/lib/glContainer.h +++ b/lib/glContainer.h @@ -38,6 +38,12 @@ public: clear(); } + template<template<typename, typename...> typename C> explicit glContainer(const C<T> & src) + { + reserve(src.size()); + std::copy(src.begin(), src.end(), std::back_inserter(*this)); + } + DEFAULT_MOVE_NO_COPY(glContainer); [[nodiscard]] iterator diff --git a/test/test-glContainer.cpp b/test/test-glContainer.cpp index 0597470..ccf3b90 100644 --- a/test/test-glContainer.cpp +++ b/test/test-glContainer.cpp @@ -305,6 +305,15 @@ BOOST_AUTO_TEST_CASE(iter_compare) BOOST_AUTO_TEST_SUITE_END(); +BOOST_AUTO_TEST_CASE(create_copy_source, *boost::unit_test::timeout(1)) +{ + const std::vector src {4, 6, 2, 4, 6, 0}; + glContainer dst {src}; + static_assert(std::is_same_v<decltype(src)::value_type, decltype(dst)::value_type>); + dst.unmap(); + BOOST_CHECK_EQUAL_COLLECTIONS(src.begin(), src.end(), dst.begin(), dst.end()); +} + struct C { int x; float y; |