diff -r 000000000000 -r bde4ae8d615e os/ossrv/ossrv_pub/boost_apis/boost/spirit/utility/regex.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/ossrv/ossrv_pub/boost_apis/boost/spirit/utility/regex.hpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,108 @@ +/*============================================================================= + Copyright (c) 2002-2003 Hartmut Kaiser + 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_REGEX_HPP +#define BOOST_SPIRIT_REGEX_HPP + +#include + +/////////////////////////////////////////////////////////////////////////////// +// +// Include the regular expression library of boost (Boost.Regex) +// +// Note though, that this library is not distributed with Spirit. You have to +// obtain a separate copy from http://www.boost.org. +// +/////////////////////////////////////////////////////////////////////////////// +#if defined(BOOST_SPIRIT_NO_REGEX_LIB) && BOOST_VERSION < 103300 +// +// Include all the Boost.regex library. Please note that this will not work, +// if you are using the boost/spirit/regex.hpp header from more than one +// translation units. +// +#define BOOST_REGEX_NO_LIB +#define BOOST_REGEX_STATIC_LINK +#define BOOST_REGEX_NO_EXTERNAL_TEMPLATES +#include +#include + +#else +// +// Include the Boost.Regex headers only. Note, that you will have to link your +// application against the Boost.Regex library as described in the related +// documentation. +// This is the only way for Boost newer than V1.32.0 +// +#include +#endif // defined(BOOST_SPIRIT_NO_REGEX_LIB) + +#include + +/////////////////////////////////////////////////////////////////////////////// +#include +#include +#include +#include // for boost::detail::iterator_traits + +/////////////////////////////////////////////////////////////////////////////// +namespace boost { namespace spirit { + +/////////////////////////////////////////////////////////////////////////////// +// rxstrlit class +template +struct rxstrlit : public parser > { + + typedef rxstrlit self_t; + + rxstrlit(CharT const *first, CharT const *last) + : rx(first, last) {} + rxstrlit(CharT const *first) + : rx(first) {} + + template + typename parser_result::type + parse(ScannerT const& scan) const + { + // Due to limitations in the boost::regex library the iterators wrapped in + // the ScannerT object should be at least bidirectional iterators. Plain + // forward iterators do not work here. + typedef typename ScannerT::iterator_t iterator_t; + typedef + typename boost::detail::iterator_traits::iterator_category + iterator_category; + + BOOST_STATIC_ASSERT(( + boost::is_convertible::value + )); + + typedef typename parser_result::type result_t; + return impl::contiguous_parser_parse(rx, scan, scan); + } + +private: + impl::rx_parser rx; // contains the boost regular expression parser +}; + +/////////////////////////////////////////////////////////////////////////////// +// Generator functions +template +inline rxstrlit +regex_p(CharT const *first) +{ return rxstrlit(first); } + +////////////////////////////////// +template +inline rxstrlit +regex_p(CharT const *first, CharT const *last) +{ return rxstrlit(first, last); } + +/////////////////////////////////////////////////////////////////////////////// +}} // namespace boost::spirit + +#endif // BOOST_SPIRIT_REGEX_HPP