x
Yes
No
Do you want to visit DriveHQ English website?
Inicio
Características
Precios
Prueba gratuita
Software cliente
Acerca de nosotros
Servidor de archivos
|
Solución de copias de seguridad
|
Servidor FTP
|
Servidor de correo electrónico
|
Alojamiento web
|
Software cliente
Servidor de archivos
Solución de copia de seguridad
Servidor FTP
Servidor de correo electrónico
Alojamiento web
Software cliente
alternate_matcher.hpp - Hosted on DriveHQ Cloud IT Platform
Arriba
Subir
Descargar
Compartir
Publicar
Nueva carpeta
Nuevo archivo
Copiar
Cortar
Eliminar
Pegar
Clasificación
Actualizar
Ruta de la carpeta: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\references\boost_1_35_0\boost\xpressive\detail\core\matcher\alternate_matcher.hpp
Girar
Efecto
Propiedad
Historial
/////////////////////////////////////////////////////////////////////////////// // alternate_matcher.hpp // // Copyright 2007 Eric Niebler. Distributed under 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_XPRESSIVE_DETAIL_CORE_MATCHER_ALTERNATE_MATCHER_HPP_EAN_10_04_2005 #define BOOST_XPRESSIVE_DETAIL_CORE_MATCHER_ALTERNATE_MATCHER_HPP_EAN_10_04_2005 // MS compatible compilers support #pragma once #if defined(_MSC_VER) && (_MSC_VER >= 1020) # pragma once #endif #include
#if BOOST_VERSION <= 103200 // WORKAROUND for Fusion bug in Boost 1.32 namespace boost { namespace fusion { namespace detail { struct iterator_root; } using detail::iterator_root; }} #endif #include
#include
#include
#include
#include
#include
#include
namespace boost { namespace xpressive { namespace detail { /////////////////////////////////////////////////////////////////////////////// // alt_match_pred // template
struct alt_match_pred { alt_match_pred(match_state
&state) : state_(&state) { } template
bool operator ()(Xpr const &xpr) const { return xpr.BOOST_NESTED_TEMPLATE push_match
(*this->state_); } private: match_state
*state_; }; /////////////////////////////////////////////////////////////////////////////// // alt_match // template
inline bool alt_match ( alternates_vector
const &alts, match_state
&state, Next const & ) { return detail::any(alts.begin(), alts.end(), alt_match_pred
(state)); } template
inline bool alt_match ( alternates_list const &alts, match_state
&state, Next const & ) { return fusion::any(alts, alt_match_pred
(state)); } /////////////////////////////////////////////////////////////////////////////// // alternate_matcher template
struct alternate_matcher : quant_style< Alternates::width != unknown_width::value && Alternates::pure ? quant_fixed_width : quant_variable_width , Alternates::width , Alternates::pure > { typedef Alternates alternates_type; typedef typename Traits::char_type char_type; Alternates alternates_; mutable hash_peek_bitset
bset_; explicit alternate_matcher(Alternates const &alternates = Alternates()) : alternates_(alternates) , bset_() { } template
bool match(match_state
&state, Next const &next) const { if(!state.eos() && !this->can_match_(*state.cur_, traits_cast
(state))) { return false; } return detail::alt_match(this->alternates_, state, next); } detail::width get_width() const { // Only called when constructing static regexes, and this is a // set of same-width alternates where the widths are known at compile // time, as in: sregex rx = +(_ | 'a' | _n); BOOST_MPL_ASSERT_RELATION(unknown_width::value, !=, Alternates::width); return Alternates::width; } private: alternate_matcher &operator =(alternate_matcher const &); bool can_match_(char_type ch, Traits const &traits) const { return this->bset_.test(ch, traits); } }; }}} #endif
alternate_matcher.hpp
Dirección de la página
Dirección del archivo
Anterior
3/36
Siguiente
Descargar
( 4 KB )
Comments
Total ratings:
0
Average rating:
No clasificado
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.