boost/test/utils/runtime/cla/dual_name_parameter.hpp
// (C) Copyright Gennadiy Rozental 2005-2008. // Use, modification, and distribution are 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) // See http://www.boost.org/libs/test for the library home page. // // File : $RCSfile$ // // Version : $Revision: 54633 $ // // Description : defines model of generic parameter with dual naming // *************************************************************************** #ifndef BOOST_RT_CLA_DUAL_NAME_PARAMETER_HPP_062604GER #define BOOST_RT_CLA_DUAL_NAME_PARAMETER_HPP_062604GER // Boost.Runtime.Parameter #include <boost/test/utils/runtime/config.hpp> #include <boost/test/utils/runtime/cla/named_parameter.hpp> #include <boost/test/utils/runtime/cla/char_parameter.hpp> namespace boost { namespace BOOST_RT_PARAM_NAMESPACE { namespace cla { // ************************************************************************** // // ************** dual_name_policy ************** // // ************************************************************************** // class dual_name_policy : public dual_id_policy<dual_name_policy,string_name_policy,char_name_policy> { public: dual_name_policy(); // Accept modifier template<typename Modifier> void accept_modifier( Modifier const& m ) { if( m.has( prefix ) ) { set_prefix( m[prefix] ); m.erase( prefix ); } if( m.has( name ) ) { set_name( m[name] ); m.erase( name ); } if( m.has( separator ) ) { set_separator( m[separator] ); m.erase( separator ); } dual_id_policy<dual_name_policy,string_name_policy,char_name_policy>::accept_modifier( m ); } private: void set_prefix( cstring ); void set_name( cstring ); void set_separator( cstring ); }; // ************************************************************************** // // ************** runtime::cla::dual_name_parameter ************** // // ************************************************************************** // template<typename T> class dual_name_parameter_t : public basic_parameter<T,dual_name_policy> { typedef basic_parameter<T,dual_name_policy> base; public: // Constructors explicit dual_name_parameter_t( cstring name ) : base( name ) {} }; //____________________________________________________________________________// BOOST_RT_CLA_NAMED_PARAM_GENERATORS( dual_name_parameter ) //____________________________________________________________________________// } // namespace cla } // namespace BOOST_RT_PARAM_NAMESPACE } // namespace boost #ifndef BOOST_RT_PARAM_OFFLINE # define BOOST_RT_PARAM_INLINE inline # include <boost/test/utils/runtime/cla/dual_name_parameter.ipp> #endif #endif // BOOST_RT_CLA_DUAL_NAME_PARAMETER_HPP_062604GER