diff -r 000000000000 -r bde4ae8d615e os/ossrv/ossrv_pub/boost_apis/boost/spirit/utility/chset.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/ossrv/ossrv_pub/boost_apis/boost/spirit/utility/chset.hpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,183 @@ +/*============================================================================= + Copyright (c) 2001-2003 Joel de Guzman + Copyright (c) 2001-2003 Daniel Nuffer + 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) +=============================================================================*/ +#ifndef BOOST_SPIRIT_CHSET_HPP +#define BOOST_SPIRIT_CHSET_HPP + +/////////////////////////////////////////////////////////////////////////////// +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////////// +namespace boost { namespace spirit { + +namespace utility { namespace impl { + + // This is here because some compilers choke on out-of-line member + // template functions. And we don't want to put the whole algorithm + // in the chset constructor in the class definition. + template + void construct_chset(boost::shared_ptr >& ptr, + CharT2 const* definition); + +}} // namespace utility::impl + +/////////////////////////////////////////////////////////////////////////////// +// +// chset class +// +/////////////////////////////////////////////////////////////////////////////// +template +class chset: public char_parser > { + +public: + chset(); + chset(chset const& arg_); + explicit chset(CharT arg_); + explicit chset(anychar_parser arg_); + explicit chset(nothing_parser arg_); + explicit chset(chlit const& arg_); + explicit chset(range const& arg_); + explicit chset(negated_char_parser > const& arg_); + explicit chset(negated_char_parser > const& arg_); + + template + explicit chset(CharT2 const* definition) + : ptr(new basic_chset()) + { + utility::impl::construct_chset(ptr, definition); + } + ~chset(); + + chset& operator=(chset const& rhs); + chset& operator=(CharT rhs); + chset& operator=(anychar_parser rhs); + chset& operator=(nothing_parser rhs); + chset& operator=(chlit const& rhs); + chset& operator=(range const& rhs); + chset& operator=(negated_char_parser > const& rhs); + chset& operator=(negated_char_parser > const& rhs); + + void set(range const& arg_); + void set(negated_char_parser > const& arg_); + void set(negated_char_parser > const& arg_); + + void clear(range const& arg_); + void clear(negated_char_parser > const& arg_); + bool test(CharT ch) const; + chset& inverse(); + void swap(chset& x); + + chset& operator|=(chset const& x); + chset& operator&=(chset const& x); + chset& operator-=(chset const& x); + chset& operator^=(chset const& x); + +private: + + boost::shared_ptr > ptr; +}; + +/////////////////////////////////////////////////////////////////////////////// +// +// Generator functions +// +/////////////////////////////////////////////////////////////////////////////// +template +inline chset +chset_p(chlit const& arg_) +{ return chset(arg_); } + +////////////////////////////////// +template +inline chset +chset_p(range const& arg_) +{ return chset(arg_); } + +template +inline chset +chset_p(negated_char_parser > const& arg_) +{ return chset(arg_); } + +template +inline chset +chset_p(negated_char_parser > const& arg_) +{ return chset(arg_); } + +////////////////////////////////// +inline chset +chset_p(char const* init) +{ return chset(init); } + +////////////////////////////////// +inline chset +chset_p(wchar_t const* init) +{ return chset(init); } + +////////////////////////////////// +inline chset +chset_p(char ch) +{ return chset(ch); } + +////////////////////////////////// +inline chset +chset_p(wchar_t ch) +{ return chset(ch); } + +////////////////////////////////// +inline chset +chset_p(int ch) +{ return chset(ch); } + +////////////////////////////////// +inline chset +chset_p(unsigned int ch) +{ return chset(ch); } + +////////////////////////////////// +inline chset +chset_p(short ch) +{ return chset(ch); } + +#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) +////////////////////////////////// +inline chset +chset_p(unsigned short ch) +{ return chset(ch); } +#endif +////////////////////////////////// +inline chset +chset_p(long ch) +{ return chset(ch); } + +////////////////////////////////// +inline chset +chset_p(unsigned long ch) +{ return chset(ch); } + +#ifdef BOOST_HAS_LONG_LONG +////////////////////////////////// +inline chset< ::boost::long_long_type> +chset_p( ::boost::long_long_type ch) +{ return chset< ::boost::long_long_type>(ch); } + +////////////////////////////////// +inline chset< ::boost::ulong_long_type> +chset_p( ::boost::ulong_long_type ch) +{ return chset< ::boost::ulong_long_type>(ch); } +#endif + +/////////////////////////////////////////////////////////////////////////////// +}} // namespace boost::spirit + +#endif + +#include +#include