diff options
Diffstat (limited to '')
| -rw-r--r-- | MoonParser/pegtl/internal/integer_sequence.hpp | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/MoonParser/pegtl/internal/integer_sequence.hpp b/MoonParser/pegtl/internal/integer_sequence.hpp deleted file mode 100644 index cdcf20d..0000000 --- a/MoonParser/pegtl/internal/integer_sequence.hpp +++ /dev/null | |||
| @@ -1,85 +0,0 @@ | |||
| 1 | // Copyright (c) 2017 Dr. Colin Hirsch and Daniel Frey | ||
| 2 | // Please see LICENSE for license or visit https://github.com/taocpp/PEGTL/ | ||
| 3 | |||
| 4 | #ifndef TAOCPP_PEGTL_INCLUDE_INTERNAL_INTEGER_SEQUENCE_HPP | ||
| 5 | #define TAOCPP_PEGTL_INCLUDE_INTERNAL_INTEGER_SEQUENCE_HPP | ||
| 6 | |||
| 7 | #include <cstddef> | ||
| 8 | #include <type_traits> | ||
| 9 | #include <utility> | ||
| 10 | |||
| 11 | namespace tao | ||
| 12 | { | ||
| 13 | namespace TAOCPP_PEGTL_NAMESPACE | ||
| 14 | { | ||
| 15 | namespace internal | ||
| 16 | { | ||
| 17 | template< typename T, T... Ns > | ||
| 18 | struct integer_sequence | ||
| 19 | { | ||
| 20 | using value_type = T; | ||
| 21 | |||
| 22 | static constexpr std::size_t size() noexcept | ||
| 23 | { | ||
| 24 | return sizeof...( Ns ); | ||
| 25 | } | ||
| 26 | }; | ||
| 27 | |||
| 28 | template< std::size_t... Ns > | ||
| 29 | using index_sequence = integer_sequence< std::size_t, Ns... >; | ||
| 30 | |||
| 31 | template< typename, std::size_t, bool > | ||
| 32 | struct double_up; | ||
| 33 | |||
| 34 | template< typename T, T... Ns, std::size_t N > | ||
| 35 | struct double_up< integer_sequence< T, Ns... >, N, false > | ||
| 36 | { | ||
| 37 | using type = integer_sequence< T, Ns..., ( N + Ns )... >; | ||
| 38 | }; | ||
| 39 | |||
| 40 | template< typename T, T... Ns, std::size_t N > | ||
| 41 | struct double_up< integer_sequence< T, Ns... >, N, true > | ||
| 42 | { | ||
| 43 | using type = integer_sequence< T, Ns..., ( N + Ns )..., 2 * N >; | ||
| 44 | }; | ||
| 45 | |||
| 46 | template< typename T, T N, typename = void > | ||
| 47 | struct generate_sequence; | ||
| 48 | |||
| 49 | template< typename T, T N > | ||
| 50 | using generate_sequence_t = typename generate_sequence< T, N >::type; | ||
| 51 | |||
| 52 | template< typename T, T N, typename > | ||
| 53 | struct generate_sequence | ||
| 54 | : double_up< generate_sequence_t< T, N / 2 >, N / 2, N % 2 == 1 > | ||
| 55 | { | ||
| 56 | }; | ||
| 57 | |||
| 58 | template< typename T, T N > | ||
| 59 | struct generate_sequence< T, N, typename std::enable_if< ( N == 0 ) >::type > | ||
| 60 | { | ||
| 61 | using type = integer_sequence< T >; | ||
| 62 | }; | ||
| 63 | |||
| 64 | template< typename T, T N > | ||
| 65 | struct generate_sequence< T, N, typename std::enable_if< ( N == 1 ) >::type > | ||
| 66 | { | ||
| 67 | using type = integer_sequence< T, 0 >; | ||
| 68 | }; | ||
| 69 | |||
| 70 | template< typename T, T N > | ||
| 71 | using make_integer_sequence = generate_sequence_t< T, N >; | ||
| 72 | |||
| 73 | template< std::size_t N > | ||
| 74 | using make_index_sequence = make_integer_sequence< std::size_t, N >; | ||
| 75 | |||
| 76 | template< typename... Ts > | ||
| 77 | using index_sequence_for = make_index_sequence< sizeof...( Ts ) >; | ||
| 78 | |||
| 79 | } // namespace internal | ||
| 80 | |||
| 81 | } // namespace TAOCPP_PEGTL_NAMESPACE | ||
| 82 | |||
| 83 | } // namespace tao | ||
| 84 | |||
| 85 | #endif | ||
