]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/spirit/include/boost/spirit/home/classic/core/impl/match.ipp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / spirit / include / boost / spirit / home / classic / core / impl / match.ipp
1 /*=============================================================================
2 Copyright (c) 1998-2003 Joel de Guzman
3 http://spirit.sourceforge.net/
4
5 Use, modification and distribution is subject to the Boost Software
6 License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
7 http://www.boost.org/LICENSE_1_0.txt)
8 =============================================================================*/
9 #if !defined(BOOST_SPIRIT_MATCH_IPP)
10 #define BOOST_SPIRIT_MATCH_IPP
11 #include <algorithm>
12
13 namespace boost { namespace spirit {
14
15 BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN
16
17 template <typename T>
18 inline match<T>::match()
19 : len(-1), val() {}
20
21 template <typename T>
22 inline match<T>::match(std::size_t length_)
23 : len(length_), val() {}
24
25 template <typename T>
26 inline match<T>::match(std::size_t length_, ctor_param_t val_)
27 : len(length_), val(val_) {}
28
29 template <typename T>
30 inline bool
31 match<T>::operator!() const
32 {
33 return len < 0;
34 }
35
36 template <typename T>
37 inline std::ptrdiff_t
38 match<T>::length() const
39 {
40 return len;
41 }
42
43 template <typename T>
44 inline bool
45 match<T>::has_valid_attribute() const
46 {
47 return val.is_initialized();
48 }
49
50 template <typename T>
51 inline typename match<T>::return_t
52 match<T>::value() const
53 {
54 BOOST_SPIRIT_ASSERT(val.is_initialized());
55 return *val;
56 }
57
58 template <typename T>
59 inline void
60 match<T>::swap(match& other)
61 {
62 std::swap(len, other.len);
63 std::swap(val, other.val);
64 }
65
66 inline match<nil_t>::match()
67 : len(-1) {}
68
69 inline match<nil_t>::match(std::size_t length_)
70 : len(length_) {}
71
72 inline match<nil_t>::match(std::size_t length_, nil_t)
73 : len(length_) {}
74
75 inline bool
76 match<nil_t>::operator!() const
77 {
78 return len < 0;
79 }
80
81 inline bool
82 match<nil_t>::has_valid_attribute() const
83 {
84 return false;
85 }
86
87 inline std::ptrdiff_t
88 match<nil_t>::length() const
89 {
90 return len;
91 }
92
93 inline nil_t
94 match<nil_t>::value() const
95 {
96 return nil_t();
97 }
98
99 inline void
100 match<nil_t>::value(nil_t) {}
101
102 inline void
103 match<nil_t>::swap(match<nil_t>& other)
104 {
105 std::swap(len, other.len);
106 }
107
108 BOOST_SPIRIT_CLASSIC_NAMESPACE_END
109
110 }} // namespace boost::spirit
111
112 #endif
113