1/*============================================================================= 2 Copyright (c) 1998-2003 Joel de Guzman 3 Copyright (c) 2001 Daniel Nuffer 4 Copyright (c) 2002 Hartmut Kaiser 5 http://spirit.sourceforge.net/ 6 7 Use, modification and distribution is subject to the Boost Software 8 License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 9 http://www.boost.org/LICENSE_1_0.txt) 10=============================================================================*/ 11#if !defined(BOOST_SPIRIT_SEQUENCE_IPP) 12#define BOOST_SPIRIT_SEQUENCE_IPP 13 14namespace boost { namespace spirit { 15 16BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN 17 18 /////////////////////////////////////////////////////////////////////////// 19 // 20 // sequence class implementation 21 // 22 /////////////////////////////////////////////////////////////////////////// 23 template <typename A, typename B> 24 inline sequence<A, B> 25 operator>>(parser<A> const& a, parser<B> const& b) 26 { 27 return sequence<A, B>(a.derived(), b.derived()); 28 } 29 30 template <typename A> 31 inline sequence<A, chlit<char> > 32 operator>>(parser<A> const& a, char b) 33 { 34 return sequence<A, chlit<char> >(a.derived(), b); 35 } 36 37 template <typename B> 38 inline sequence<chlit<char>, B> 39 operator>>(char a, parser<B> const& b) 40 { 41 return sequence<chlit<char>, B>(a, b.derived()); 42 } 43 44 template <typename A> 45 inline sequence<A, strlit<char const*> > 46 operator>>(parser<A> const& a, char const* b) 47 { 48 return sequence<A, strlit<char const*> >(a.derived(), b); 49 } 50 51 template <typename B> 52 inline sequence<strlit<char const*>, B> 53 operator>>(char const* a, parser<B> const& b) 54 { 55 return sequence<strlit<char const*>, B>(a, b.derived()); 56 } 57 58 template <typename A> 59 inline sequence<A, chlit<wchar_t> > 60 operator>>(parser<A> const& a, wchar_t b) 61 { 62 return sequence<A, chlit<wchar_t> >(a.derived(), b); 63 } 64 65 template <typename B> 66 inline sequence<chlit<wchar_t>, B> 67 operator>>(wchar_t a, parser<B> const& b) 68 { 69 return sequence<chlit<wchar_t>, B>(a, b.derived()); 70 } 71 72 template <typename A> 73 inline sequence<A, strlit<wchar_t const*> > 74 operator>>(parser<A> const& a, wchar_t const* b) 75 { 76 return sequence<A, strlit<wchar_t const*> >(a.derived(), b); 77 } 78 79 template <typename B> 80 inline sequence<strlit<wchar_t const*>, B> 81 operator>>(wchar_t const* a, parser<B> const& b) 82 { 83 return sequence<strlit<wchar_t const*>, B>(a, b.derived()); 84 } 85 86BOOST_SPIRIT_CLASSIC_NAMESPACE_END 87 88}} // namespace boost::spirit 89 90#endif 91