fix doc example typo
[boost.git] / boost / xpressive / xpressive_typeof.hpp
blob9b03cbdb7abc7354f69d8bdfc9598c90ed78ba25
1 ///////////////////////////////////////////////////////////////////////////////
2 /// \file xpressive_typeof.hpp
3 /// Type registrations so that xpressive can be used with the Boost.Typeof library.
4 //
5 // Copyright 2008 Eric Niebler. Distributed under the Boost
6 // Software License, Version 1.0. (See accompanying file
7 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 #ifndef BOOST_XPRESSIVE_XPRESSIVE_TYPEOF_H
10 #define BOOST_XPRESSIVE_XPRESSIVE_TYPEOF_H
12 // MS compatible compilers support #pragma once
13 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
14 # pragma once
15 #endif
17 #include <boost/config.hpp>
18 #include <boost/typeof/typeof.hpp>
19 #ifndef BOOST_NO_STL_LOCALE
20 # include <boost/typeof/std/locale.hpp>
21 #endif
22 #include <boost/proto/proto_typeof.hpp>
23 #include <boost/xpressive/detail/detail_fwd.hpp>
25 #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
27 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::mpl::bool_, (bool))
29 ///////////////////////////////////////////////////////////////////////////////
30 // Misc.
32 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::set_initializer)
33 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::keeper_tag)
34 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::modifier_tag)
35 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::lookahead_tag)
36 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::lookbehind_tag)
37 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::check_tag)
38 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::mark_tag)
39 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::word_begin)
40 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::word_end)
41 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::generic_quant_tag, (unsigned int)(unsigned int))
42 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::basic_regex, (typename))
43 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::word_boundary, (typename))
44 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::value, (typename))
45 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::reference, (typename))
46 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::local, (typename))
47 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::placeholder, (typename)(int)(typename))
48 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::tracking_ptr, (typename))
49 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::regex_impl, (typename))
50 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::let_, (typename))
51 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::action_arg, (typename)(typename))
52 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::named_mark, (typename))
53 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::sub_match, (typename))
54 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::nested_results, (typename))
56 ///////////////////////////////////////////////////////////////////////////////
57 // Placeholders
59 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::mark_placeholder)
60 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::posix_charset_placeholder)
61 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::assert_bol_placeholder)
62 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::assert_eol_placeholder)
63 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::logical_newline_placeholder)
64 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::self_placeholder)
65 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::assert_word_placeholder, (typename))
66 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::range_placeholder, (typename))
67 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::attribute_placeholder, (typename))
69 ///////////////////////////////////////////////////////////////////////////////
70 // Matchers
72 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::epsilon_matcher)
73 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::true_matcher)
74 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::end_matcher)
75 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::independent_end_matcher)
76 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::any_matcher)
77 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::assert_bos_matcher)
78 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::assert_eos_matcher)
79 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::mark_begin_matcher)
80 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::mark_end_matcher)
81 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::repeat_begin_matcher)
82 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::alternate_end_matcher)
83 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::attr_end_matcher)
84 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::assert_bol_matcher, (typename))
85 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::assert_eol_matcher, (typename))
86 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::literal_matcher, (typename)(typename)(typename))
87 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::string_matcher, (typename)(typename))
88 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::charset_matcher, (typename)(typename)(typename))
89 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::logical_newline_matcher, (typename))
90 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::mark_matcher, (typename)(typename))
91 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::repeat_end_matcher, (typename))
92 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::alternate_matcher, (typename)(typename))
93 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::optional_matcher, (typename)(typename))
94 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::optional_mark_matcher, (typename)(typename))
95 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::simple_repeat_matcher, (typename)(typename))
96 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::regex_byref_matcher, (typename))
97 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::regex_matcher, (typename))
98 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::posix_charset_matcher, (typename))
99 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::assert_word_matcher, (typename)(typename))
100 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::range_matcher, (typename)(typename))
101 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::keeper_matcher, (typename))
102 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::lookahead_matcher, (typename))
103 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::lookbehind_matcher, (typename))
104 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::set_matcher, (typename)(typename))
105 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::predicate_matcher, (typename))
106 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::action_matcher, (typename))
107 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::attr_matcher, (typename)(typename)(typename))
108 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::attr_begin_matcher, (typename))
110 ///////////////////////////////////////////////////////////////////////////////
111 // Ops
113 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::op::push)
114 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::op::push_back)
115 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::op::pop)
116 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::op::push_front)
117 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::op::pop_back)
118 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::op::pop_front)
119 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::op::back)
120 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::op::front)
121 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::op::top)
122 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::op::first)
123 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::op::second)
124 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::op::matched)
125 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::op::length)
126 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::op::str)
127 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::op::insert)
128 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::op::make_pair)
129 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::op::as, (typename))
130 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::op::static_cast_, (typename))
131 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::op::dynamic_cast_, (typename))
132 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::op::const_cast_, (typename))
133 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::op::construct, (typename))
134 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::op::throw_, (typename))
136 ///////////////////////////////////////////////////////////////////////////////
137 // Modifiers
139 BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::icase_modifier)
140 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::locale_modifier, (typename))
142 ///////////////////////////////////////////////////////////////////////////////
143 // Traits
145 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::null_regex_traits, (typename))
146 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::cpp_regex_traits, (typename))
147 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::c_regex_traits, (typename))
148 BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::regex_traits, (typename)(typename))
150 #endif