Chris@16: // (C) Copyright Gennadiy Rozental 2005-2008. Chris@16: // Use, modification, and distribution are subject to the Chris@16: // Boost Software License, Version 1.0. (See accompanying file Chris@16: // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: // See http://www.boost.org/libs/test for the library home page. Chris@16: // Chris@16: // File : $RCSfile$ Chris@16: // Chris@101: // Version : $Revision$ Chris@16: // Chris@16: // Description : positional parameter model Chris@16: // *************************************************************************** Chris@16: Chris@16: #ifndef BOOST_RT_CLA_POSITIONAL_PARAMETER_HPP_062604GER Chris@16: #define BOOST_RT_CLA_POSITIONAL_PARAMETER_HPP_062604GER Chris@16: Chris@16: // Boost.Runtime.Parameter Chris@16: #include Chris@16: Chris@16: #include Chris@16: Chris@16: namespace boost { Chris@16: Chris@16: namespace BOOST_RT_PARAM_NAMESPACE { Chris@16: Chris@16: namespace cla { Chris@16: Chris@16: // ************************************************************************** // Chris@16: // ************** trivial_id_policy ************** // Chris@16: // ************************************************************************** // Chris@16: Chris@16: class trivial_id_policy : public identification_policy { Chris@16: public: Chris@16: trivial_id_policy() Chris@16: : identification_policy( rtti::type_id() ) Chris@16: {} Chris@16: BOOST_RT_PARAM_UNNEEDED_VIRTUAL ~trivial_id_policy() {} Chris@16: Chris@16: virtual bool responds_to( cstring name ) const { return m_name == name; } Chris@16: virtual bool conflict_with( identification_policy const& ) const { return false; } Chris@16: virtual cstring id_2_report() const { return m_name; } Chris@16: virtual void usage_info( format_stream& fs ) const Chris@16: { Chris@16: if( !m_name.empty() ) Chris@16: fs << BOOST_RT_PARAM_LITERAL( '<' ) << m_name << BOOST_RT_PARAM_LITERAL( '>' ); Chris@16: else Chris@16: fs << BOOST_RT_PARAM_CSTRING_LITERAL( "" ); Chris@16: } Chris@16: Chris@16: virtual bool matching( parameter const& p, argv_traverser&, bool primary ) const Chris@16: { Chris@16: return primary && ( !p.has_argument() || p.p_multiplicable ); Chris@16: } Chris@16: Chris@16: template Chris@16: void accept_modifier( Modifier const& m ) Chris@16: { Chris@16: nfp::optionally_assign( m_name, m, name ); Chris@16: } Chris@16: Chris@16: private: Chris@16: // Data members Chris@16: dstring m_name; Chris@16: }; Chris@16: Chris@16: // ************************************************************************** // Chris@16: // ************** runtime::cla::positional_parameter ************** // Chris@16: // ************************************************************************** // Chris@16: Chris@16: template Chris@16: class positional_parameter_t : public basic_parameter { Chris@16: typedef basic_parameter base; Chris@16: public: Chris@16: // Constructors Chris@16: explicit positional_parameter_t( cstring name ) Chris@16: : base( name ) Chris@16: {} Chris@16: }; Chris@16: Chris@16: //____________________________________________________________________________// Chris@16: Chris@16: BOOST_RT_CLA_NAMED_PARAM_GENERATORS( positional_parameter ) Chris@16: Chris@16: } // namespace cla Chris@16: Chris@16: } // namespace BOOST_RT_PARAM_NAMESPACE Chris@16: Chris@16: } // namespace boost Chris@16: Chris@16: #endif // BOOST_RT_CLA_POSITIONAL_PARAMETER_HPP_062604GER