From b31d7b1f03f38fd4746e848d74ff4031c935fcf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 21 Mar 2020 17:39:52 +0100 Subject: [PATCH] Animation: there's no need to use STL in Player internals anymore. Keeping std::vector only in one documentation snippet to not confuse users too much -- growable arrays are rather new, after all. --- doc/snippets/MagnumAnimation.cpp | 2 ++ src/Magnum/Animation/Player.h | 4 ++-- src/Magnum/Animation/Player.hpp | 3 ++- src/Magnum/Animation/Test/PlayerTest.cpp | 19 ++++++++++++------- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/doc/snippets/MagnumAnimation.cpp b/doc/snippets/MagnumAnimation.cpp index 332ad3014..e039ca35a 100644 --- a/doc/snippets/MagnumAnimation.cpp +++ b/doc/snippets/MagnumAnimation.cpp @@ -23,6 +23,8 @@ DEALINGS IN THE SOFTWARE. */ +#include + #include "Magnum/Timeline.h" #include "Magnum/Math/Bezier.h" #include "Magnum/Math/Matrix3.h" diff --git a/src/Magnum/Animation/Player.h b/src/Magnum/Animation/Player.h index 4135c6819..764527214 100644 --- a/src/Magnum/Animation/Player.h +++ b/src/Magnum/Animation/Player.h @@ -30,7 +30,7 @@ */ #include -#include +#include #include "Magnum/Animation/Track.h" #include "Magnum/Math/Range.h" @@ -812,7 +812,7 @@ template> elapsedInternal(T time, T& updatedStartTime, T& updatedPauseTime, State& updatedState) const; - std::vector _tracks; + Containers::Array _tracks; Math::Range1D _duration; UnsignedInt _playCount{1}; State _state{State::Stopped}; diff --git a/src/Magnum/Animation/Player.hpp b/src/Magnum/Animation/Player.hpp index ff114cce5..794d09c9f 100644 --- a/src/Magnum/Animation/Player.hpp +++ b/src/Magnum/Animation/Player.hpp @@ -31,6 +31,7 @@ #include "Player.h" +#include #include #include @@ -105,7 +106,7 @@ template Player& Player::addInternal(const TrackVi _duration = track.duration(); else _duration = Math::join(track.duration(), _duration); - _tracks.emplace_back(track, advancer, destination, userCallback, userCallbackData, 0); + arrayAppend(_tracks, Containers::InPlaceInit, track, advancer, destination, userCallback, userCallbackData, 0u); return *this; } diff --git a/src/Magnum/Animation/Test/PlayerTest.cpp b/src/Magnum/Animation/Test/PlayerTest.cpp index 670581814..44eeab140 100644 --- a/src/Magnum/Animation/Test/PlayerTest.cpp +++ b/src/Magnum/Animation/Test/PlayerTest.cpp @@ -24,8 +24,10 @@ */ #include +#include #include #include +#include #include #include @@ -1287,8 +1289,8 @@ template void PlayerTest::addWithCallbackOnChangeTemplate() { } /* Can't use raw lambdas because MSVC 2015 */ -void callback(std::vector& data, Int value) { - data.push_back(value); +void callback(Containers::Array& data, Int value) { + arrayAppend(data, value); } template void PlayerTest::addRawCallback() { @@ -1297,7 +1299,7 @@ template void PlayerTest::addRawCallback() { T track; Int result = -1; - std::vector data; + Containers::Array data; Animation::Player player; player.addRawCallback(track, @@ -1306,16 +1308,19 @@ template void PlayerTest::addRawCallback() { Int value = static_cast&>(track).at(key, hint); if(value == *static_cast(destination)) return; *static_cast(destination) = value; - reinterpret_cast&, Int)>(callback)(*static_cast*>(userData), value); + reinterpret_cast&, Int)>(callback)(*static_cast*>(userData), value); }, &result, reinterpret_cast(callback), &data) .play({}); /* Should add the default-constructed value into the vector, but only once */ - CORRADE_COMPARE(data, std::vector{}); + CORRADE_COMPARE_AS(data, Containers::arrayView({}), + TestSuite::Compare::Container); player.advance({}); - CORRADE_COMPARE(data, std::vector{0}); + CORRADE_COMPARE_AS(data, Containers::arrayView({0}), + TestSuite::Compare::Container); player.advance(1.0f); - CORRADE_COMPARE(data, std::vector{0}); + CORRADE_COMPARE_AS(data, Containers::arrayView({0}), + TestSuite::Compare::Container); } void PlayerTest::runFor100YearsFloat() {