31 #ifndef TWEENY_EASINGRESOLVE_H 32 #define TWEENY_EASINGRESOLVE_H 41 template<
int I,
typename TypeTuple,
typename FunctionTuple,
typename... Fs>
42 struct easingresolve {
43 static void impl(FunctionTuple &b, Fs... fs) {
44 if (
sizeof...(Fs) == 0)
return;
45 easingresolve<I, TypeTuple, FunctionTuple, Fs...>::impl(b, fs...);
49 template<
int I,
typename TypeTuple,
typename FunctionTuple,
typename F1,
typename... Fs>
50 struct easingresolve<I, TypeTuple, FunctionTuple, F1, Fs...> {
51 static void impl(FunctionTuple &b, F1 f1, Fs... fs) {
53 easingresolve<I + 1, TypeTuple, FunctionTuple, Fs...>::impl(b, fs...);
57 template<
int I,
typename TypeTuple,
typename FunctionTuple,
typename... Fs>
58 struct easingresolve<I, TypeTuple, FunctionTuple, easing::linearEasing, Fs...> {
59 typedef typename std::tuple_element<I, TypeTuple>::type ArgType;
61 static void impl(FunctionTuple &b, easing::linearEasing, Fs... fs) {
62 get<I>(b) = easing::linear.run<ArgType>;
63 easingresolve<I + 1, TypeTuple, FunctionTuple, Fs...>::impl(b, fs...);
67 #define DECLARE_EASING_RESOLVE(__EASING_TYPE__) \ 68 template <int I, typename TypeTuple, typename FunctionTuple, typename... Fs> \ 69 struct easingresolve<I, TypeTuple, FunctionTuple, easing::__EASING_TYPE__ ## InEasing, Fs...> { \ 70 typedef typename std::tuple_element<I, TypeTuple>::type ArgType; \ 71 static void impl(FunctionTuple & b, decltype(easing::__EASING_TYPE__ ## In), Fs... fs) { \ 72 get<I>(b) = easing::__EASING_TYPE__ ## In.run<ArgType>; \ 73 easingresolve<I+1, TypeTuple, FunctionTuple, Fs...>::impl(b, fs...); \ 77 template <int I, typename TypeTuple, typename FunctionTuple, typename... Fs> \ 78 struct easingresolve<I, TypeTuple, FunctionTuple, easing::__EASING_TYPE__ ## OutEasing, Fs...> { \ 79 typedef typename std::tuple_element<I, TypeTuple>::type ArgType; \ 80 static void impl(FunctionTuple & b, decltype(easing::__EASING_TYPE__ ## Out), Fs... fs) { \ 81 get<I>(b) = easing::__EASING_TYPE__ ## Out.run<ArgType>; \ 82 easingresolve<I+1, TypeTuple, FunctionTuple, Fs...>::impl(b, fs...); \ 86 template <int I, typename TypeTuple, typename FunctionTuple, typename... Fs> \ 87 struct easingresolve<I, TypeTuple, FunctionTuple, easing::__EASING_TYPE__ ## InOutEasing, Fs...> { \ 88 typedef typename std::tuple_element<I, TypeTuple>::type ArgType; \ 89 static void impl(FunctionTuple & b, decltype(easing::__EASING_TYPE__ ## InOut), Fs... fs) { \ 90 get<I>(b) = easing::__EASING_TYPE__ ## InOut.run<ArgType>; \ 91 easingresolve<I+1, TypeTuple, FunctionTuple, Fs...>::impl(b, fs...); \ 95 DECLARE_EASING_RESOLVE(quadratic);
96 DECLARE_EASING_RESOLVE(cubic);
97 DECLARE_EASING_RESOLVE(quartic);
98 DECLARE_EASING_RESOLVE(quintic);
99 DECLARE_EASING_RESOLVE(sinusoidal);
100 DECLARE_EASING_RESOLVE(exponential);
101 DECLARE_EASING_RESOLVE(circular);
102 DECLARE_EASING_RESOLVE(bounce);
103 DECLARE_EASING_RESOLVE(elastic);
104 DECLARE_EASING_RESOLVE(back);
108 #endif //TWEENY_EASINGRESOLVE_H The tweeny namespace contains all symbols and names for the Tweeny library.
Definition: MANUAL.dox:1