]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | [#get_position] |
2 | [section get_position] | |
3 | ||
4 | [h1 Synopsis] | |
5 | ||
6 | template <class D> | |
7 | struct get_position; | |
8 | ||
9 | This is a [link lazy_metafunction lazy template metafunction]. | |
10 | ||
11 | [table Arguments | |
12 | [[Name] [Type]] | |
13 | [[`D`] [[link accept accept] or [link reject reject] value]] | |
14 | ] | |
15 | ||
16 | [h1 Description] | |
17 | ||
18 | Returns the source position information of a parsing result. | |
19 | ||
20 | [h1 Header] | |
21 | ||
22 | #include <boost/metaparse/get_position.hpp> | |
23 | ||
24 | [h1 Example] | |
25 | ||
26 | #include <boost/metaparse/get_position.hpp> | |
27 | #include <boost/metaparse/start.hpp> | |
28 | #include <boost/metaparse/accept.hpp> | |
29 | #include <boost/metaparse/reject.hpp> | |
30 | #include <boost/metaparse/string.hpp> | |
31 | #include <boost/metaparse/define_error.hpp> | |
32 | ||
33 | #include <type_traits> | |
34 | ||
35 | using namespace boost::metaparse; | |
36 | ||
37 | BOOST_METAPARSE_DEFINE_ERROR(sample_error, "Sample error message"); | |
38 | ||
39 | struct returns_reject | |
40 | { | |
41 | using type = reject<sample_error, start>; | |
42 | }; | |
43 | ||
44 | static_assert( | |
45 | std::is_same< | |
46 | start, | |
47 | get_position<reject<sample_error, start>>::type | |
48 | >::type::value, | |
49 | "It should return the position of a reject" | |
50 | ); | |
51 | ||
52 | static_assert( | |
53 | std::is_same< | |
54 | start, | |
55 | get_position< | |
56 | accept<sample_error, BOOST_METAPARSE_STRING("foo"), start> | |
57 | >::type | |
58 | >::type::value, | |
59 | "It should return the position of an accept" | |
60 | ); | |
61 | ||
62 | static_assert( | |
63 | std::is_same<start, get_position<returns_reject>::type>::type::value, | |
64 | "It should support lazy evaluation" | |
65 | ); | |
66 | ||
67 | [endsect] | |
68 |