![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /proc/thread-self/root/usr/include/boost/spirit/home/x3/support/traits/ |
Upload File : |
/*============================================================================= Copyright (c) 2001-2014 Joel de Guzman Copyright (c) 2001-2011 Hartmut Kaiser 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) ================================================_==============================*/ #if !defined(BOOST_SPIRIT_X3_PRINT_TOKEN_JANUARY_20_2013_0814AM) #define BOOST_SPIRIT_X3_PRINT_TOKEN_JANUARY_20_2013_0814AM #include <boost/mpl/if.hpp> #include <boost/mpl/and.hpp> #include <boost/type_traits/is_convertible.hpp> #include <cctype> namespace boost { namespace spirit { namespace x3 { namespace traits { /////////////////////////////////////////////////////////////////////////// // generate debug output for lookahead token (character) stream namespace detail { struct token_printer_debug_for_chars { template<typename Out, typename Char> static void print(Out& o, Char c) { using namespace std; // allow for ADL to find the proper iscntrl switch (c) { case '\a': o << "\\a"; break; case '\b': o << "\\b"; break; case '\f': o << "\\f"; break; case '\n': o << "\\n"; break; case '\r': o << "\\r"; break; case '\t': o << "\\t"; break; case '\v': o << "\\v"; break; default: if (c >= 0 && c < 127 && iscntrl(c)) o << "\\" << std::oct << int(c); else o << Char(c); } } }; // for token types where the comparison with char constants wouldn't work struct token_printer_debug { template<typename Out, typename T> static void print(Out& o, T const& val) { o << val; } }; } template <typename T, typename Enable = void> struct token_printer_debug : mpl::if_< mpl::and_< is_convertible<T, char>, is_convertible<char, T> > , detail::token_printer_debug_for_chars , detail::token_printer_debug>::type {}; template <typename Out, typename T> inline void print_token(Out& out, T const& val) { // allow to customize the token printer routine token_printer_debug<T>::print(out, val); } }}}} #endif