Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:53:51

0001 ///////////////////////////////////////////////////////////////////////////////
0002 // placeholders.hpp
0003 //
0004 //  Copyright 2008 Eric Niebler. Distributed under the Boost
0005 //  Software License, Version 1.0. (See accompanying file
0006 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0007 
0008 #ifndef BOOST_XPRESSIVE_DETAIL_STATIC_PLACEHOLDERS_HPP_EAN_10_04_2005
0009 #define BOOST_XPRESSIVE_DETAIL_STATIC_PLACEHOLDERS_HPP_EAN_10_04_2005
0010 
0011 // MS compatible compilers support #pragma once
0012 #if defined(_MSC_VER)
0013 # pragma once
0014 # pragma warning(push)
0015 # pragma warning(disable:4510) // default constructor could not be generated
0016 # pragma warning(disable:4610) // can never be instantiated - user defined constructor required
0017 #endif
0018 
0019 #include <string>
0020 #include <boost/shared_ptr.hpp>
0021 #include <boost/xpressive/detail/core/quant_style.hpp>
0022 #include <boost/xpressive/detail/core/regex_impl.hpp>
0023 
0024 namespace boost { namespace xpressive { namespace detail
0025 {
0026 
0027 ///////////////////////////////////////////////////////////////////////////////
0028 // mark_placeholder
0029 //
0030 struct mark_placeholder
0031 {
0032     BOOST_XPR_QUANT_STYLE(quant_variable_width, unknown_width::value, true)
0033 
0034     int mark_number_;
0035 };
0036 
0037 ///////////////////////////////////////////////////////////////////////////////
0038 // posix_charset_placeholder
0039 //
0040 struct posix_charset_placeholder
0041 {
0042     BOOST_XPR_QUANT_STYLE(quant_fixed_width, 1, true)
0043 
0044     char const *name_;
0045     bool not_;
0046 };
0047 
0048 ///////////////////////////////////////////////////////////////////////////////
0049 // assert_word_placeholder
0050 //
0051 template<typename Cond>
0052 struct assert_word_placeholder
0053 {
0054     BOOST_XPR_QUANT_STYLE(quant_none, 0, true)
0055 };
0056 
0057 ///////////////////////////////////////////////////////////////////////////////
0058 // range_placeholder
0059 //
0060 template<typename Char>
0061 struct range_placeholder
0062 {
0063     BOOST_XPR_QUANT_STYLE(quant_fixed_width, 1, true)
0064 
0065     Char ch_min_;
0066     Char ch_max_;
0067     bool not_;
0068 };
0069 
0070 ///////////////////////////////////////////////////////////////////////////////
0071 // assert_bol_placeholder
0072 //
0073 struct assert_bol_placeholder
0074 {
0075     BOOST_XPR_QUANT_STYLE(quant_none, 0, true)
0076 };
0077 
0078 ///////////////////////////////////////////////////////////////////////////////
0079 // assert_eol_placeholder
0080 //
0081 struct assert_eol_placeholder
0082 {
0083     BOOST_XPR_QUANT_STYLE(quant_none, 0, true)
0084 };
0085 
0086 ///////////////////////////////////////////////////////////////////////////////
0087 // logical_newline_placeholder
0088 //
0089 struct logical_newline_placeholder
0090 {
0091     BOOST_XPR_QUANT_STYLE(quant_variable_width, unknown_width::value, true)
0092 };
0093 
0094 ///////////////////////////////////////////////////////////////////////////////
0095 // self_placeholder
0096 //
0097 struct self_placeholder
0098 {
0099     BOOST_XPR_QUANT_STYLE(quant_variable_width, unknown_width::value, false)
0100 };
0101 
0102 ///////////////////////////////////////////////////////////////////////////////
0103 // attribute_placeholder
0104 //
0105 template<typename Nbr>
0106 struct attribute_placeholder
0107 {
0108     BOOST_XPR_QUANT_STYLE(quant_variable_width, unknown_width::value, false)
0109 
0110     typedef Nbr nbr_type;
0111     static Nbr nbr() { return Nbr(); }
0112 };
0113 
0114 }}} // namespace boost::xpressive::detail
0115 
0116 #if defined(_MSC_VER)
0117 # pragma warning(pop)
0118 #endif
0119 
0120 #endif