PageRenderTime 32ms CodeModel.GetById 29ms app.highlight 1ms RepoModel.GetById 1ms app.codeStats 0ms

/Src/Dependencies/Boost/boost/spirit/home/classic/core/impl/match.ipp

http://hadesmem.googlecode.com/
C++ Header | 113 lines | 82 code | 23 blank | 8 comment | 0 complexity | 0b86d236cfbfc96f81f4f5395349551d MD5 | raw file
  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
 13namespace boost { namespace spirit {
 14
 15BOOST_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
108BOOST_SPIRIT_CLASSIC_NAMESPACE_END
109
110}} // namespace boost::spirit
111
112#endif
113