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
 | 
						|
 |