diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2016-10-06 10:38:45 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2016-10-06 10:39:52 +0900 |
commit | 5cde13f21d36c7224b0e13d11c4b49379ae5210d (patch) | |
tree | e8269ac85a4b0f7d416e2565fa4f451b5cb41351 /boost/metaparse/v1/one_char_except.hpp | |
parent | d9ec475d945d3035377a0d89ed42e382d8988891 (diff) | |
download | boost-5cde13f21d36c7224b0e13d11c4b49379ae5210d.tar.gz boost-5cde13f21d36c7224b0e13d11c4b49379ae5210d.tar.bz2 boost-5cde13f21d36c7224b0e13d11c4b49379ae5210d.zip |
Imported Upstream version 1.61.0
Change-Id: I96a1f878d1e6164f01e9aadd5147f38fca448d90
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
Diffstat (limited to 'boost/metaparse/v1/one_char_except.hpp')
-rw-r--r-- | boost/metaparse/v1/one_char_except.hpp | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/boost/metaparse/v1/one_char_except.hpp b/boost/metaparse/v1/one_char_except.hpp new file mode 100644 index 0000000000..c859ab23f3 --- /dev/null +++ b/boost/metaparse/v1/one_char_except.hpp @@ -0,0 +1,85 @@ +#ifndef BOOST_METAPARSE_V1_ONE_CHAR_EXCEPT_HPP +#define BOOST_METAPARSE_V1_ONE_CHAR_EXCEPT_HPP + +// Copyright Abel Sinkovics (abel@sinkovics.hu) 2011. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#include <boost/metaparse/v1/error/unexpected_character.hpp> +#include <boost/metaparse/v1/impl/is_any.hpp> +#include <boost/metaparse/v1/impl/one_char_except_not_used.hpp> +#include <boost/metaparse/v1/one_char.hpp> +#include <boost/metaparse/v1/accept_when.hpp> +#include <boost/metaparse/v1/define_error.hpp> +#include <boost/metaparse/limit_one_char_except_size.hpp> + +#include <boost/preprocessor/cat.hpp> +#include <boost/preprocessor/arithmetic/dec.hpp> +#include <boost/preprocessor/arithmetic/mul.hpp> +#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp> +#include <boost/preprocessor/repetition/repeat.hpp> +#include <boost/preprocessor/repetition/enum.hpp> +#include <boost/preprocessor/punctuation/comma_if.hpp> +#include <boost/preprocessor/tuple/eat.hpp> + +namespace boost +{ + namespace metaparse + { + namespace v1 + { + template < + BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( + BOOST_METAPARSE_LIMIT_ONE_CHAR_EXCEPT_SIZE, + class C, + impl::one_char_except_not_used + ) + > + struct one_char_except; + + #ifdef MPLLBIS_METAPARSE_ONE_CHAR_EXCEPT_CASE + # error MPLLBIS_METAPARSE_ONE_CHAR_EXCEPT_CASE already defined + #endif + #define MPLLBIS_METAPARSE_ONE_CHAR_EXCEPT_CASE(z, n, unused) \ + template <BOOST_PP_ENUM_PARAMS(n, class T)> \ + struct one_char_except< \ + BOOST_PP_ENUM_PARAMS(n, T) \ + BOOST_PP_COMMA_IF( \ + BOOST_PP_MUL( \ + n, \ + BOOST_PP_SUB( \ + BOOST_PP_DEC(BOOST_METAPARSE_LIMIT_ONE_CHAR_EXCEPT_SIZE), \ + n \ + ) \ + ) \ + ) \ + BOOST_PP_ENUM( \ + BOOST_PP_SUB( \ + BOOST_PP_DEC(BOOST_METAPARSE_LIMIT_ONE_CHAR_EXCEPT_SIZE), \ + n \ + ), \ + impl::one_char_except_not_used BOOST_PP_TUPLE_EAT(3), \ + ~ \ + ) \ + > :\ + accept_when< \ + one_char, \ + impl::BOOST_PP_CAT(is_any, n)<BOOST_PP_ENUM_PARAMS(n, T)>, \ + error::unexpected_character \ + > \ + {}; + + BOOST_PP_REPEAT( + BOOST_METAPARSE_LIMIT_ONE_CHAR_EXCEPT_SIZE, + MPLLBIS_METAPARSE_ONE_CHAR_EXCEPT_CASE, + ~ + ) + + #undef MPLLBIS_METAPARSE_ONE_CHAR_EXCEPT_CASE + } + } +} + +#endif + |