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
composite.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\spirit\core\composite\composite.hpp
Girar
Efecto
Propiedad
Historial
/*============================================================================= Copyright (c) 1998-2003 Joel de Guzman 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) =============================================================================*/ #if !defined(BOOST_SPIRIT_COMPOSITE_HPP) #define BOOST_SPIRIT_COMPOSITE_HPP /////////////////////////////////////////////////////////////////////////////// #include
/////////////////////////////////////////////////////////////////////////////// namespace boost { namespace spirit { /////////////////////////////////////////////////////////////////////////// // // unary class. // // Composite class composed of a single subject. This template class // is parameterized by the subject type S and a base class to // inherit from, BaseT. The unary class is meant to be a base class // to inherit from. The inheritance structure, given the BaseT // template parameter places the unary class in the middle of a // linear, single parent hierarchy. For instance, given a class S // and a base class B, a class D can derive from unary: // // struct D : public unary
{...}; // // The inheritance structure is thus: // // B // | // unary (has S) // | // D // // The subject can be accessed from the derived class D as: // this->subject(); // // Typically, the subject S is specified as typename S::embed_t. // embed_t specifies how the subject is embedded in the composite // (See parser.hpp for details). // /////////////////////////////////////////////////////////////////////////// template
class unary : public BaseT { public: typedef BaseT base_t; typedef typename boost::call_traits
::param_type param_t; typedef typename boost::call_traits
::const_reference return_t; typedef S subject_t; typedef typename S::embed_t subject_embed_t; unary(param_t subj_) : base_t(), subj(subj_) {} unary(BaseT const& base, param_t subj_) : base_t(base), subj(subj_) {} return_t subject() const { return subj; } private: subject_embed_t subj; }; /////////////////////////////////////////////////////////////////////////// // // binary class. // // Composite class composed of a pair (left and right). This // template class is parameterized by the left and right subject // types A and B and a base class to inherit from, BaseT. The binary // class is meant to be a base class to inherit from. The // inheritance structure, given the BaseT template parameter places // the binary class in the middle of a linear, single parent // hierarchy. For instance, given classes X and Y and a base class // B, a class D can derive from binary: // // struct D : public binary
{...}; // // The inheritance structure is thus: // // B // | // binary (has X and Y) // | // D // // The left and right subjects can be accessed from the derived // class D as: this->left(); and this->right(); // // Typically, the pairs X and Y are specified as typename X::embed_t // and typename Y::embed_t. embed_t specifies how the subject is // embedded in the composite (See parser.hpp for details). // /////////////////////////////////////////////////////////////////////////////// template
class binary : public BaseT { public: typedef BaseT base_t; typedef typename boost::call_traits
::param_type left_param_t; typedef typename boost::call_traits
::const_reference left_return_t; typedef typename boost::call_traits
::param_type right_param_t; typedef typename boost::call_traits
::const_reference right_return_t; typedef A left_t; typedef typename A::embed_t left_embed_t; typedef B right_t; typedef typename B::embed_t right_embed_t; binary(left_param_t a, right_param_t b) : base_t(), subj(a, b) {} left_return_t left() const { return subj.first(); } right_return_t right() const { return subj.second(); } private: boost::compressed_pair
subj; }; }} // namespace boost::spirit #endif
composite.hpp
Dirección de la página
Dirección del archivo
Anterior
3/17
Siguiente
Descargar
( 5 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.