29 #ifndef TWEENY_TWEENTRAITS_H
30 #define TWEENY_TWEENTRAITS_H
34 #include <type_traits>
37 template<
typename T,
typename... Ts>
class tween;
41 template<
typename... Ts>
struct equal {};
42 template<
typename T>
struct equal<T> {
enum { value =
true }; };
43 template <
typename T,
typename U,
typename... Ts>
struct equal<T, U, Ts...> {
44 enum { value = std::is_same<T, U>::value && equal<T, Ts...>::value && equal<U, Ts...>::value };
47 template<
typename T,
typename...>
struct first {
typedef T type; };
49 template<
bool equal,
typename... Ts>
52 template<
typename... Ts>
53 struct valuetype<false, Ts...> {
54 typedef std::tuple<Ts...> type;
57 template<
typename... Ts>
58 struct valuetype<true, Ts...> {
59 typedef std::array<
typename first<Ts...>::type,
sizeof...(Ts)> type;
62 template<
typename... Ts>
64 typedef std::tuple<std::function<Ts(
float, Ts, Ts)>...> easingCollection;
65 typedef std::function<bool(tween<Ts...> &, Ts...)> callbackType;
66 typedef std::function<bool(tween<Ts...> &)> noValuesCallbackType;
67 typedef std::function<bool(Ts...)> noTweenCallbackType;
68 typedef typename valuetype<equal<Ts...>::value, Ts...>::type valuesType;
69 typedef std::array<uint16_t,
sizeof...(Ts)> durationsArrayType;
70 typedef tween<Ts...> type;
The tweeny namespace contains all symbols and names for the Tweeny library.
Definition: MANUAL.dox:1