Browse Source

Animation: now that STL is gone, Player can be noexcept-movable.

Reverts 2c5f97dacd. Use C++, they said.
Trust the vendors, they said.
pull/430/head
Vladimír Vondruš 6 years ago
parent
commit
3711125b7d
  1. 8
      src/Magnum/Animation/Player.h
  2. 4
      src/Magnum/Animation/Player.hpp
  3. 3
      src/Magnum/Animation/Test/PlayerTest.cpp

8
src/Magnum/Animation/Player.h

@ -278,10 +278,7 @@ template<class T, class K
Player(const Player<T, K>&) = delete;
/** @brief Move constructor */
/* The noexcept specifier was removed because it causes *extreme*
issues on various Clang versions (iOS, Android, Emscripten)
currently used on Travis CI. Not on my stock 6.0 or NDK r17 tho. */
Player(Player<T, K>&&);
Player(Player<T, K>&&) noexcept;
~Player();
@ -289,8 +286,7 @@ template<class T, class K
Player<T, K>& operator=(const Player<T, K>&) = delete;
/** @brief Move assignment */
/* Deliberately not noexcept, see above */
Player<T, K>& operator=(Player<T, K>&&);
Player<T, K>& operator=(Player<T, K>&&) noexcept;
/** @brief Time-to-key scaler */
Scaler scaler() const { return _scaler; }

4
src/Magnum/Animation/Player.hpp

@ -76,9 +76,9 @@ template<class T, class K> void Player<T, K>::advance(const T time, const std::i
for(Player<T, K>& p: players) p.advance(time);
}
template<class T, class K> Player<T, K>::Player(Player<T, K>&&) = default;
template<class T, class K> Player<T, K>::Player(Player<T, K>&&) noexcept = default;
template<class T, class K> Player<T, K>& Player<T, K>::operator=(Player<T, K>&&) = default;
template<class T, class K> Player<T, K>& Player<T, K>::operator=(Player<T, K>&&) noexcept = default;
template<class T, class K> Player<T, K>::Player(): Player<T, K>{Implementation::DefaultScaler<T, K>::scale} {}

3
src/Magnum/Animation/Test/PlayerTest.cpp

@ -300,6 +300,9 @@ void PlayerTest::constructMove() {
CORRADE_COMPARE(c.size(), 2);
CORRADE_COMPARE(c.track(0).keys().data(), Track.keys().data());
CORRADE_COMPARE(c.track(1).keys().data(), track2.keys().data());
CORRADE_VERIFY(std::is_nothrow_move_constructible<Player<Float>>::value);
CORRADE_VERIFY(std::is_nothrow_move_assignable<Player<Float>>::value);
}
void PlayerTest::setDurationExtend() {

Loading…
Cancel
Save