12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- // (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 : positional parameter model
- // ***************************************************************************
- #ifndef BOOST_RT_CLA_POSITIONAL_PARAMETER_HPP_062604GER
- #define BOOST_RT_CLA_POSITIONAL_PARAMETER_HPP_062604GER
- // Boost.Runtime.Parameter
- #include <boost/test/utils/runtime/config.hpp>
- #include <boost/test/utils/runtime/cla/basic_parameter.hpp>
- namespace boost {
- namespace BOOST_RT_PARAM_NAMESPACE {
- namespace cla {
- // ************************************************************************** //
- // ************** trivial_id_policy ************** //
- // ************************************************************************** //
- class trivial_id_policy : public identification_policy {
- public:
- trivial_id_policy()
- : identification_policy( rtti::type_id<trivial_id_policy>() )
- {}
- BOOST_RT_PARAM_UNNEEDED_VIRTUAL ~trivial_id_policy() {}
- virtual bool responds_to( cstring name ) const { return m_name == name; }
- virtual bool conflict_with( identification_policy const& ) const { return false; }
- virtual cstring id_2_report() const { return m_name; }
- virtual void usage_info( format_stream& fs ) const
- {
- if( !m_name.empty() )
- fs << BOOST_RT_PARAM_LITERAL( '<' ) << m_name << BOOST_RT_PARAM_LITERAL( '>' );
- else
- fs << BOOST_RT_PARAM_CSTRING_LITERAL( "<value>" );
- }
- virtual bool matching( parameter const& p, argv_traverser&, bool primary ) const
- {
- return primary && ( !p.has_argument() || p.p_multiplicable );
- }
- template<typename Modifier>
- void accept_modifier( Modifier const& m )
- {
- nfp::optionally_assign( m_name, m, name );
- }
- private:
- // Data members
- dstring m_name;
- };
- // ************************************************************************** //
- // ************** runtime::cla::positional_parameter ************** //
- // ************************************************************************** //
- template<typename T>
- class positional_parameter_t : public basic_parameter<T,trivial_id_policy> {
- typedef basic_parameter<T,trivial_id_policy> base;
- public:
- // Constructors
- explicit positional_parameter_t( cstring name )
- : base( name )
- {}
- };
- //____________________________________________________________________________//
- BOOST_RT_CLA_NAMED_PARAM_GENERATORS( positional_parameter )
- } // namespace cla
- } // namespace BOOST_RT_PARAM_NAMESPACE
- } // namespace boost
- #endif // BOOST_RT_CLA_POSITIONAL_PARAMETER_HPP_062604GER
|