Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // placeholders.hpp Chris@16: // Chris@16: // Copyright 2008 Eric Niebler. Distributed under the Boost Chris@16: // Software License, Version 1.0. (See accompanying file Chris@16: // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: #ifndef BOOST_XPRESSIVE_DETAIL_STATIC_PLACEHOLDERS_HPP_EAN_10_04_2005 Chris@16: #define BOOST_XPRESSIVE_DETAIL_STATIC_PLACEHOLDERS_HPP_EAN_10_04_2005 Chris@16: Chris@16: // MS compatible compilers support #pragma once Chris@101: #if defined(_MSC_VER) Chris@16: # pragma once Chris@16: # pragma warning(push) Chris@16: # pragma warning(disable:4510) // default constructor could not be generated Chris@16: # pragma warning(disable:4610) // can never be instantiated - user defined constructor required Chris@16: #endif Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: namespace boost { namespace xpressive { namespace detail Chris@16: { Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // mark_placeholder Chris@16: // Chris@16: struct mark_placeholder Chris@16: { Chris@16: BOOST_XPR_QUANT_STYLE(quant_variable_width, unknown_width::value, true) Chris@16: Chris@16: int mark_number_; Chris@16: }; Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // posix_charset_placeholder Chris@16: // Chris@16: struct posix_charset_placeholder Chris@16: { Chris@16: BOOST_XPR_QUANT_STYLE(quant_fixed_width, 1, true) Chris@16: Chris@16: char const *name_; Chris@16: bool not_; Chris@16: }; Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // assert_word_placeholder Chris@16: // Chris@16: template Chris@16: struct assert_word_placeholder Chris@16: { Chris@16: BOOST_XPR_QUANT_STYLE(quant_none, 0, true) Chris@16: }; Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // range_placeholder Chris@16: // Chris@16: template Chris@16: struct range_placeholder Chris@16: { Chris@16: BOOST_XPR_QUANT_STYLE(quant_fixed_width, 1, true) Chris@16: Chris@16: Char ch_min_; Chris@16: Char ch_max_; Chris@16: bool not_; Chris@16: }; Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // assert_bol_placeholder Chris@16: // Chris@16: struct assert_bol_placeholder Chris@16: { Chris@16: BOOST_XPR_QUANT_STYLE(quant_none, 0, true) Chris@16: }; Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // assert_eol_placeholder Chris@16: // Chris@16: struct assert_eol_placeholder Chris@16: { Chris@16: BOOST_XPR_QUANT_STYLE(quant_none, 0, true) Chris@16: }; Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // logical_newline_placeholder Chris@16: // Chris@16: struct logical_newline_placeholder Chris@16: { Chris@16: BOOST_XPR_QUANT_STYLE(quant_variable_width, unknown_width::value, true) Chris@16: }; Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // self_placeholder Chris@16: // Chris@16: struct self_placeholder Chris@16: { Chris@16: BOOST_XPR_QUANT_STYLE(quant_variable_width, unknown_width::value, false) Chris@16: }; Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // attribute_placeholder Chris@16: // Chris@16: template Chris@16: struct attribute_placeholder Chris@16: { Chris@16: BOOST_XPR_QUANT_STYLE(quant_variable_width, unknown_width::value, false) Chris@16: Chris@16: typedef Nbr nbr_type; Chris@16: static Nbr nbr() { return Nbr(); } Chris@16: }; Chris@16: Chris@16: }}} // namespace boost::xpressive::detail Chris@16: Chris@101: #if defined(_MSC_VER) Chris@16: # pragma warning(pop) Chris@16: #endif Chris@16: Chris@16: #endif