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