114 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*=============================================================================
 | |
|     Copyright (c) 1998-2003 Joel de Guzman
 | |
|     http://spirit.sourceforge.net/
 | |
| 
 | |
|     Use, modification and distribution is subject to the Boost Software
 | |
|     License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 | |
|     http://www.boost.org/LICENSE_1_0.txt)
 | |
| =============================================================================*/
 | |
| #if !defined(BOOST_SPIRIT_MATCH_IPP)
 | |
| #define BOOST_SPIRIT_MATCH_IPP
 | |
| #include <algorithm>
 | |
| 
 | |
| namespace boost { namespace spirit {
 | |
| 
 | |
| BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN
 | |
| 
 | |
|     template <typename T>
 | |
|     inline match<T>::match()
 | |
|     : len(-1), val() {}
 | |
| 
 | |
|     template <typename T>
 | |
|     inline match<T>::match(std::size_t length_)
 | |
|     : len(length_), val() {}
 | |
| 
 | |
|     template <typename T>
 | |
|     inline match<T>::match(std::size_t length_, ctor_param_t val_)
 | |
|     : len(length_), val(val_) {}
 | |
| 
 | |
|     template <typename T>
 | |
|     inline bool
 | |
|     match<T>::operator!() const
 | |
|     {
 | |
|         return len < 0;
 | |
|     }
 | |
| 
 | |
|     template <typename T>
 | |
|     inline std::ptrdiff_t
 | |
|     match<T>::length() const
 | |
|     {
 | |
|         return len;
 | |
|     }
 | |
| 
 | |
|     template <typename T>
 | |
|     inline bool
 | |
|     match<T>::has_valid_attribute() const
 | |
|     {
 | |
|         return val.is_initialized();
 | |
|     }
 | |
| 
 | |
|     template <typename T>
 | |
|     inline typename match<T>::return_t
 | |
|     match<T>::value() const
 | |
|     {
 | |
|         BOOST_SPIRIT_ASSERT(val.is_initialized());
 | |
|         return *val;
 | |
|     }
 | |
| 
 | |
|     template <typename T>
 | |
|     inline void
 | |
|     match<T>::swap(match& other)
 | |
|     {
 | |
|         std::swap(len, other.len);
 | |
|         std::swap(val, other.val);
 | |
|     }
 | |
| 
 | |
|     inline match<nil_t>::match()
 | |
|     : len(-1) {}
 | |
| 
 | |
|     inline match<nil_t>::match(std::size_t length_)
 | |
|     : len(length_) {}
 | |
| 
 | |
|     inline match<nil_t>::match(std::size_t length_, nil_t)
 | |
|     : len(length_) {}
 | |
| 
 | |
|     inline bool
 | |
|     match<nil_t>::operator!() const
 | |
|     {
 | |
|         return len < 0;
 | |
|     }
 | |
| 
 | |
|     inline bool
 | |
|     match<nil_t>::has_valid_attribute() const
 | |
|     {
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     inline std::ptrdiff_t
 | |
|     match<nil_t>::length() const
 | |
|     {
 | |
|         return len;
 | |
|     }
 | |
| 
 | |
|     inline nil_t
 | |
|     match<nil_t>::value() const
 | |
|     {
 | |
|         return nil_t();
 | |
|     }
 | |
| 
 | |
|     inline void
 | |
|     match<nil_t>::value(nil_t) {}
 | |
| 
 | |
|     inline void
 | |
|     match<nil_t>::swap(match<nil_t>& other)
 | |
|     {
 | |
|         std::swap(len, other.len);
 | |
|     }
 | |
| 
 | |
| BOOST_SPIRIT_CLASSIC_NAMESPACE_END
 | |
| 
 | |
| }} // namespace boost::spirit
 | |
| 
 | |
| #endif
 | |
| 
 | 
