]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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) | |
8 | ||
9 | #ifndef BOOST_XPRESSIVE_XPRESSIVE_TYPEOF_H | |
10 | #define BOOST_XPRESSIVE_XPRESSIVE_TYPEOF_H | |
11 | ||
12 | // MS compatible compilers support #pragma once | |
13 | #if defined(_MSC_VER) | |
14 | # pragma once | |
15 | #endif | |
16 | ||
17 | #include <boost/config.hpp> | |
18 | #include <boost/typeof/typeof.hpp> | |
19 | #ifndef BOOST_NO_STD_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> | |
24 | ||
25 | #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() | |
26 | ||
27 | BOOST_TYPEOF_REGISTER_TEMPLATE(boost::mpl::bool_, (bool)) | |
28 | ||
29 | /////////////////////////////////////////////////////////////////////////////// | |
30 | // Misc. | |
31 | // | |
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)) | |
55 | ||
56 | /////////////////////////////////////////////////////////////////////////////// | |
57 | // Placeholders | |
58 | // | |
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)) | |
68 | ||
69 | /////////////////////////////////////////////////////////////////////////////// | |
70 | // Matchers | |
71 | // | |
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)) | |
109 | ||
110 | /////////////////////////////////////////////////////////////////////////////// | |
111 | // Ops | |
112 | // | |
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)) | |
135 | ||
136 | /////////////////////////////////////////////////////////////////////////////// | |
137 | // Modifiers | |
138 | // | |
139 | BOOST_TYPEOF_REGISTER_TYPE(boost::xpressive::detail::icase_modifier) | |
140 | BOOST_TYPEOF_REGISTER_TEMPLATE(boost::xpressive::detail::locale_modifier, (typename)) | |
141 | ||
142 | /////////////////////////////////////////////////////////////////////////////// | |
143 | // Traits | |
144 | // | |
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)) | |
149 | ||
150 | #endif |