#ifndef BOOST_METAPARSE_V1_ONE_CHAR_HPP #define BOOST_METAPARSE_V1_ONE_CHAR_HPP // Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 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 #include #include #include #include #include #include #include #include #include #include namespace boost { namespace metaparse { namespace v1 { struct one_char { private: template struct next_pos : boost::mpl::eval_if< boost::mpl::bool_< C::type::value == '\r' || ( C::type::value == '\n' && get_prev_char::type::value != '\r' ) >, next_line, next_char > {}; template struct unchecked : accept< typename boost::mpl::front::type, boost::mpl::pop_front, NextPos > {}; public: typedef one_char type; template struct apply : boost::mpl::eval_if< typename boost::mpl::empty::type, reject, unchecked, Pos> > > {}; }; } } } #endif