1 // (C) Copyright Gennadiy Rozental 2005-2008. 2 // Use, modification, and distribution are subject to the 3 // Boost Software License, Version 1.0. (See accompanying file 4 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 6 // See http://www.boost.org/libs/test for the library home page. 7 // 8 // File : $RCSfile$ 9 // 10 // Version : $Revision: 49312 $ 11 // 12 // Description : specific value generators 13 // *************************************************************************** 14 15 #ifndef BOOST_RT_CLA_VALUE_GENERATOR_HPP_062604GER 16 #define BOOST_RT_CLA_VALUE_GENERATOR_HPP_062604GER 17 18 // Boost.Runtime.Parameter 19 #include <boost/test/utils/runtime/config.hpp> 20 21 #include <boost/test/utils/runtime/cla/fwd.hpp> 22 #include <boost/test/utils/runtime/cla/parser.hpp> 23 24 namespace boost { 25 26 namespace BOOST_RT_PARAM_NAMESPACE { 27 28 namespace cla { 29 30 namespace rt_cla_detail { 31 32 // ************************************************************************** // 33 // ************** runtime::cla::const_generator ************** // 34 // ************************************************************************** // 35 36 template<typename T> 37 class const_generator { 38 public: 39 // Constructor const_generator(T const & t)40 explicit const_generator( T const& t ) : m_const_value( t ) {} 41 42 // generator interface operator ()(parser const &,boost::optional<T> & t) const43 void operator()( parser const&, boost::optional<T>& t ) const { t = m_const_value; } 44 45 private: 46 // Data members 47 T m_const_value; 48 }; 49 50 // ************************************************************************** // 51 // ************** runtime::cla::ref_generator ************** // 52 // ************************************************************************** // 53 54 template<typename T> 55 class ref_generator { 56 public: 57 // Constructor ref_generator(cstring ref_id)58 explicit ref_generator( cstring ref_id ) : m_ref_id( ref_id ) {} 59 60 // generator interface operator ()(parser const & p,boost::optional<T> & t) const61 void operator()( parser const& p, boost::optional<T>& t ) const 62 { 63 p.get( m_ref_id, t ); 64 } 65 66 private: 67 // Data members 68 cstring m_ref_id; 69 }; 70 71 //____________________________________________________________________________// 72 73 } // namespace rt_cla_detail 74 75 } // namespace cla 76 77 } // namespace BOOST_RT_PARAM_NAMESPACE 78 79 } // namespace boost 80 81 #endif // BOOST_RT_CLA_VALUE_GENERATOR_HPP_062604GER 82