diff --git a/Chinczyk188/openal32.dll b/Chinczyk188/openal32.dll new file mode 100644 index 0000000..7760c05 Binary files /dev/null and b/Chinczyk188/openal32.dll differ diff --git a/Chinczyk188/res/audio/welcome_alt.mp3 b/Chinczyk188/res/audio/welcome_alt.mp3 new file mode 100644 index 0000000..e369290 Binary files /dev/null and b/Chinczyk188/res/audio/welcome_alt.mp3 differ diff --git a/Chinczyk188/res/sprites/board.png b/Chinczyk188/res/sprites/board.png new file mode 100644 index 0000000..d0bcde7 Binary files /dev/null and b/Chinczyk188/res/sprites/board.png differ diff --git a/Chinczyk188/ssp.hpp b/Chinczyk188/ssp.hpp new file mode 100644 index 0000000..0fc4cd3 --- /dev/null +++ b/Chinczyk188/ssp.hpp @@ -0,0 +1,3338 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#define SSP_DISABLE_FAST_FLOAT + + +namespace ss { + +//////////////// +// tup merge/cat +//////////////// + +template +struct tup_cat; + +template +struct tup_cat, std::tuple> { + using type = std::tuple; +}; + +template +struct tup_cat> { + using type = std::tuple; +}; + +template +using tup_cat_t = typename tup_cat::type; + +//////////////// +// tup first/head +//////////////// + +template +struct left_of_impl; + +template +struct left_of_impl { +private: + constexpr static auto recursion_limit = 128; + +public: + static_assert(N < recursion_limit, "recursion limit reached"); + static_assert(N != 0, "cannot take the whole tuple"); + using type = tup_cat_t::type>; +}; + +template +struct left_of_impl<0, T, Ts...> { + using type = std::tuple; +}; + +template +using left_of_t = typename left_of_impl::type; + +template +using first_t = typename left_of_impl::type; + +template +using head_t = typename left_of_impl<0, Ts...>::type; + +//////////////// +// tup tail/last +//////////////// + +template +struct right_of_impl; + +template +struct right_of_impl { + using type = typename right_of_impl::type; +}; + +template +struct right_of_impl<0, T, Ts...> { + using type = std::tuple; +}; + +template +using right_of_t = typename right_of_impl::type; + +template +using tail_t = typename right_of_impl<1, Ts...>::type; + +template +using last_t = typename right_of_impl::type; + +//////////////// +// apply trait +//////////////// + +template